有人能給我一個如何獲得JTable中特定單元格的背景顏色的例子嗎?我無法找到如何做到這一點的例子。大量關於如何獲取單元格中的值的示例,而不是單元格的背景顏色。JTable單元格顏色
回答
有人能給我一個如何獲得JTable中特定單元格的背景顏色的例子嗎?我無法找到如何做到這一點的例子。
但一切都基於JTable tutorial的expecially部分和Custom Renderers
大量關於獲取單元格中值的示例,但不是單元格的背景色。
我無法抗拒,請在這個論壇或者
我希望幫助你....
要在單元格0, 0
得到JTable
顏色你可以得到細胞成分的背景顏色:
TableCellRenderer cellRenderer = table.getCellRenderer(0, 0);
Component rendererComponent = cellRenderer.getTableCellRendererComponent(table, null, false, true, 0, 0);
Color cellColor = rendererComponent.getBackground();
如果使用帶有一些棘手的基於值的邏輯的自定義渲染器,或者使用自定義渲染器或行被選中。 –
它會工作,如果你通過正確的行/列到table.getCellRenderer – MadProgrammer
錯誤...這將不會讓你配置後的顏色_table_,請參閱[我的評論](http://stackoverflow.com/a/ 12862835/203657) – kleopatra
它應該是類似以下內容(根據所有評論固定):
重要提示:使用table.prepareRenderer(...)讓JTable中爲你做
public Color getTableCellBackground(JTable table, int row, int col) {
TableCellRenderer renderer = table.getCellRenderer(row, col);
Component component = table.prepareRenderer(renderer, row, col);
return component.getBackground();
}
完全各項工作演示:
public class TableRenderDemo extends JPanel {
public TableRenderDemo() {
super(new GridLayout(1, 0));
final JTable table = new JTable(new MyTableModel());
table.setPreferredScrollableViewportSize(new Dimension(600, 200));
table.setFillsViewportHeight(true);
table.setDefaultRenderer(Object.class, new MyRenderer());
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
JOptionPane.showInternalMessageDialog(TableRenderDemo.this,
"Color: " + getTableCellBackground(table, row, col));
System.out.println("Color: " + getTableCellBackground(table, row, col));
}
});
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
public Color getTableCellBackground(JTable table, int row, int col) {
TableCellRenderer renderer = table.getCellRenderer(row, col);
Component component = table.prepareRenderer(renderer, row, col);
return component.getBackground();
}
class MyRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
JTextField editor = new JTextField();
if (value != null) {
editor.setText(value.toString());
}
editor.setBackground((row % 2 == 0) ? Color.white : Color.BLUE);
return editor;
}
}
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
private Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
public final Object[] longValues = {"Jane", "Kathy",
"None of the above",
new Integer(20), Boolean.TRUE};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("TableRenderDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableRenderDemo newContentPane = new TableRenderDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
我試過這個例子,我遵循邏輯,但由於某種原因,我得到255,255,255爲每個單元格,但我有備用行着色,所以我不知道這裏發生了什麼。 – user1154644
user1154644您是否搜索過,有XxxCellRenderer和PrepareRenderer,並且此代碼沒有設置任何Color,也沒有設置Cell BackGround ...,只有 – mKorbel
的骨架如何應用行突出顯示? – MadProgrammer
使用的TableCellRenderer
jTable1 = new javax.swing.JTable(6,6){
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if(column==2 && row==4)
{
Color color= c.getBackground();// use setBackground to set color and get background to get background of a particular cell
System.out.println("Color of row=0 and column=0 is "+color);
}
else
{
c.setBackground(Color.GREEN);
setShowGrid(true);
}
return c;
}
};
沒有回答這個問題(這不是太清楚,承認:-) – kleopatra
您是否注意到System.out.println(); statment執行無限?我相信prepareRenderer方法以某種方式遞歸調用。即使您使用「純」JTable類的對象而不是定製版本的對象,這種預期行爲是否也會發生? – PrashanD
@Prashan我回答了很久很久,我明白答案並不完美。我現在不接觸揮杆。是的,我知道答案並不完美。我在鞦韆上失去了聯繫,現在我在android上編程。 – Raghunandan
- 1. 更改JTable中單元格的顏色
- 2. 更改JTable單元格顏色
- 3. JTable中列中的顏色單元格
- 4. jTable單元格背景顏色
- 5. Java JTable更改單元格顏色
- 6. 基於單元格內容的顏色個別JTable單元格?
- 7. 基於單元值的Jtable單元格字體顏色
- 8. 單元格顏色
- 9. jitem單擊後更改jtable單元格顏色
- 10. JTable爲所有單元格而不僅是特定單元格顏色
- 11. 更改單元格顏色而不更改其他單元格中的顏色(Jtable)
- 12. 把圖標放在JTable單元格中改變它的顏色
- 13. 無條件地更改JTable單元格的背景顏色
- 14. 在動態JTable上更改單元格的背景顏色
- 15. 動態更改JTable單元格的背景顏色
- 16. 更改鞦韆JTable中單元格的顏色
- 17. JTable - 爲什麼單元格顏色不起作用
- 18. 如何更改Netbeans中的JTable標題單元格顏色
- 19. 在JTable更改特定的單元格顏色背景
- 20. 如何使用CustomRenderer更改jTable單元格顏色
- 21. JTable使用TableCellRenderer更改單元格顏色
- 22. 用桌子的單元格標題顏色自定義jtable cellrenderer
- 23. Java - 更改JTable中某些單元格的顏色
- 24. JTable valuechanged然後更改單元格顏色
- 25. 設置JTable中JCheckBox單元格的顏色
- 26. Datagrid單元格顏色
- 27. 更改單元格顏色
- 28. GridView單元格顏色
- 29. 更改單元格顏色
- 30. 單元格顏色Django-Tables2
閱讀答案後,我注意到我誤解了你的問題;-)即使是現在,這仍然是一個不理想的問題:沒有上下文和更多細節(f.i.爲什麼,你想要達到什麼樣的效果,你究竟在哪裏/如何獲得顏色......)很難正確回答...... – kleopatra