Hallo an alle,
Ich bin neu hier in diesem Forum, möchte aber gleich ohne groß rumschwafeln zu meinem Problem kommen.
Mein Problem:
Ich kann die Zellhintergrundfarbe einer selektierten Zelle in meiner JTable nicht durch einen Mausklick anpassen.
Meine Situation:
Ich versuche unter Java das Programm "Schiffe versenken" zu programmieren - Ist die Abschlussnote für meinen Programmierkurs.
Für das Feld, auf dem man die einzelnen Schiffe positionieren kann, habe ich mich für eine JTable entschieden.
Nach einer ausgedehnten Researche bin ich dann auf folgenden Link gekommen in eurem Forum:
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7032-jtable-teil-4-darstellung-daten.html
Gibt einen guten Einblick in das Thema. Ich habe versucht mich an die Anleitung zuhalten, jedoch funkt es bei mir noch immer nicht. ???:L
Zur besseren Übersicht mein Code der JTable:
System.out.println(x +" "+ y);
}
});
[/code]
Mein Code des DefaultCellRenderer
Ich weiß, dass das Thema schon einmal gepostet wurde. Ich würde aber euch bitten ein kurzen Blick darauf zu werfen, denn ich finde meinen Fehler nicht, den ich gemacht habe.
Gemäße dem Sprichwort:"Man sieht den Wald, vor lauter Bäume nicht" :autsch:
Vielen Dank für eure Hilfe.
LG
Adriano-Celentano
Ich bin neu hier in diesem Forum, möchte aber gleich ohne groß rumschwafeln zu meinem Problem kommen.
Mein Problem:
Ich kann die Zellhintergrundfarbe einer selektierten Zelle in meiner JTable nicht durch einen Mausklick anpassen.
Meine Situation:
Ich versuche unter Java das Programm "Schiffe versenken" zu programmieren - Ist die Abschlussnote für meinen Programmierkurs.
Für das Feld, auf dem man die einzelnen Schiffe positionieren kann, habe ich mich für eine JTable entschieden.
Nach einer ausgedehnten Researche bin ich dann auf folgenden Link gekommen in eurem Forum:
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7032-jtable-teil-4-darstellung-daten.html
Gibt einen guten Einblick in das Thema. Ich habe versucht mich an die Anleitung zuhalten, jedoch funkt es bei mir noch immer nicht. ???:L
Zur besseren Übersicht mein Code der JTable:
Java:
table = new JTable(rowData, columnName);
table.setModel(new DefaultTableModel(
new Object[][] {
{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},
},
new String[] {
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
table.getColumnModel().getColumn(0).setResizable(false);
table.getColumnModel().getColumn(0).setPreferredWidth(50);
table.getColumnModel().getColumn(1).setResizable(false);
table.getColumnModel().getColumn(1).setPreferredWidth(50);
table.getColumnModel().getColumn(2).setResizable(false);
table.getColumnModel().getColumn(2).setPreferredWidth(50);
table.getColumnModel().getColumn(3).setResizable(false);
table.getColumnModel().getColumn(3).setPreferredWidth(50);
table.getColumnModel().getColumn(4).setResizable(false);
table.getColumnModel().getColumn(4).setPreferredWidth(50);
table.getColumnModel().getColumn(5).setResizable(false);
table.getColumnModel().getColumn(5).setPreferredWidth(50);
table.getColumnModel().getColumn(6).setResizable(false);
table.getColumnModel().getColumn(6).setPreferredWidth(50);
table.getColumnModel().getColumn(7).setResizable(false);
table.getColumnModel().getColumn(7).setPreferredWidth(50);
table.getColumnModel().getColumn(8).setResizable(false);
table.getColumnModel().getColumn(8).setPreferredWidth(50);
table.getColumnModel().getColumn(9).setResizable(false);
table.getColumnModel().getColumn(9).setPreferredWidth(50);
table.setRowHeight(20);
table.setBackground(SystemColor.desktop);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
table.setColumnSelectionAllowed(false);
table.setRowSelectionAllowed(false);
table.setCellSelectionEnabled(true);
table.setBounds(68, 125, 223, 200);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0) {
int x = table.getSelectedColumn();
int y = table.getSelectedRow();
[code] table.setDefaultRenderer( Color.class, new MyTableCellRenderer() );
System.out.println(x +" "+ y);
}
});
[/code]
Mein Code des DefaultCellRenderer
Java:
public class MyTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
Color color = (Color) value;
setText(color.getRed() + ", " + color.getBlue() + ", "
+ color.getGreen());
setForeground(color);
setBackground(Color.green);
return this;
}
}
Ich weiß, dass das Thema schon einmal gepostet wurde. Ich würde aber euch bitten ein kurzen Blick darauf zu werfen, denn ich finde meinen Fehler nicht, den ich gemacht habe.
Gemäße dem Sprichwort:"Man sieht den Wald, vor lauter Bäume nicht" :autsch:
Vielen Dank für eure Hilfe.
LG
Adriano-Celentano