2017-08-07 18 views
1

我有一個jtable ,,,其標題有一個彈出菜單,您可以從中更改標題,但更改不可見,直到我點擊標題... pls幫助欄標題不更改,直到我點擊它

import java.awt.Color; 
import java.awt.Component; 
import java.awt.Font; 

import javax.swing.BorderFactory; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableCellRenderer; 

public class MyCustomHeaderRender extends DefaultTableCellRenderer { 
String colmNameToChange; 
int colomHeaderClicked; 

public MyCustomHeaderRender(String nameRecieved, int coloum) { 

    colmNameToChange = nameRecieved; 
    colomHeaderClicked = coloum;  
} 

@Override 
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 
     int row, int column) { 

    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
    if (colomHeaderClicked == column) { 
     setOpaque(true); 
     table.getColumnModel().getColumn(colomHeaderClicked).setHeaderValue(colmNameToChange); 
     table.getTableHeader().repaint(); 
     table.repaint(); 

    } 

    return c; 
} 

} 

`

回答

1

渲染器無關與改變列的文本。它僅描繪列的文本。所以擺脫渲染器。

相反,您需要實際更新TableColumn以包含新的列名稱。

因此,代碼會是這樣的:

TableColumnModel tcm = table.getColumnModel(); 
TableColumn tc = tcm.getColumn(...); 
tc.setHeaderValue(...); 
table.getTableHeader().repaint(); 
+0

謝謝...它工作 – anrdggle

+0

@anrdggle,很高興它幫助。不要忘了點擊勾號「接受」答案,以便人們知道問題已經解決。 – camickr

+0

一切都是上帝,但你可以告訴我,爲什麼標題是不可見的,一旦我按下JOptionDialog框上的取消按鈕,因爲我將標題名稱作爲輸入 – anrdggle