Java-Jtable-不同颜色的单元格
我已经看到了一些例子,但仍然无法理解如何解决这个问题,可能没有一个干净的解决方案。。 我试图通过使用10*10作为单元格的Jtable来构建John Conway的生命游戏。我知道如何更改表格背景颜色(所有单元格),但我无法更改特定单元格的颜色。我知道,我需要用CellRenderer创建一个类,但我也无法理解它 这是我的密码:Java-Jtable-不同颜色的单元格,java,jframe,jtable,jpanel,conways-game-of-life,Java,Jframe,Jtable,Jpanel,Conways Game Of Life,我已经看到了一些例子,但仍然无法理解如何解决这个问题,可能没有一个干净的解决方案。。 我试图通过使用10*10作为单元格的Jtable来构建John Conway的生命游戏。我知道如何更改表格背景颜色(所有单元格),但我无法更改特定单元格的颜色。我知道,我需要用CellRenderer创建一个类,但我也无法理解它 这是我的密码: public class theGame { public static void main(String [] args) { theMa
public class theGame {
public static void main(String [] args) {
theMatrix gui = new theMatrix();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(550,450);
gui.setVisible(true);
gui.setTitle("Game Of Life");
JOptionPane.showMessageDialog(null, " Welcome John Conway's Game Of Life ");
int replay = JOptionPane.showConfirmDialog(null, "Would you like to see the next generation?", "Close?", JOptionPane.YES_NO_OPTION);
if (replay == JOptionPane.YES_OPTION);
}
}
下面是一个自定义单元渲染的示例,它根据行和列更改背景颜色:
public class TheMatrix extends JFrame {
JTable table;
public TheMatrix() {
setLayout(new FlowLayout());
String[] columNames = {"", "", "", "", "", "", "", "", "", ""};
Object[][] data = { // Create a 10*10 table with default values.
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null}
};
table = new JTable(data, columNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 500));
table.setRowHeight(40);
table.setDefaultRenderer(Object.class, new MyRenderer());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
}
class MyRenderer implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int col) {
JTextField cell = new JTextField();
cell.setBackground(((row % 2) == 0) && ((col % 2) == 0) ? Color.WHITE : Color.BLACK);
return cell;
}
}
单元格渲染器应该使用特定单元格的数据来确定如何渲染。当然,我会将表格更改为0,1,然后尝试按游戏应该的不同类型对其着色。如何更改颜色?什么颜色有什么价值?并始终在问题中显示您的最佳尝试代码,以创建更好的问题并获得更好的帮助。谢谢!我想我知道如何借助这个答案来解决这个问题--
public class TheMatrix extends JFrame {
JTable table;
public TheMatrix() {
setLayout(new FlowLayout());
String[] columNames = {"", "", "", "", "", "", "", "", "", ""};
Object[][] data = { // Create a 10*10 table with default values.
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null}
};
table = new JTable(data, columNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 500));
table.setRowHeight(40);
table.setDefaultRenderer(Object.class, new MyRenderer());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
}
class MyRenderer implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int col) {
JTextField cell = new JTextField();
cell.setBackground(((row % 2) == 0) && ((col % 2) == 0) ? Color.WHITE : Color.BLACK);
return cell;
}
}