Hallo zusammen,
ich möchte mir eine Tabelle bauen in der in der 2.Zeile ein Jbutton liegt, der wenn man ihn anklickt den JColorChooser öffnet und nach auswahl der Farbe seine BackgroundColor zu dieser ändert.
Ich hab zwar geschafft das ich ihn anklicken kann aber er übernimmt die Farbe net wirklich.
Hier mein Code
Ich hoffe mir kann wer helfen, ich werd nämlich langsam wahnsinnig damit!
gruß keks
ich möchte mir eine Tabelle bauen in der in der 2.Zeile ein Jbutton liegt, der wenn man ihn anklickt den JColorChooser öffnet und nach auswahl der Farbe seine BackgroundColor zu dieser ändert.
Ich hab zwar geschafft das ich ihn anklicken kann aber er übernimmt die Farbe net wirklich.
Hier mein Code
Code:
package de.iset.test.colortable;
import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
public class ColorTableTest
{
public static void main (String args[])
{
// Look and Feel des jeweiligen OS setzen
try
{
UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ( ));
}
catch (Exception e)
{
e.printStackTrace ( );
}
JFrame frame = new JFrame ("Editable Color Table");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
EditChartTableModel model = new EditChartTableModel( );
JTable table = new JTable (model);
table.setDefaultRenderer( Color.class, new ColorCellRenderer() );
table.setDefaultEditor (Color.class, new ColorEditor());
table.setDefaultRenderer( Integer.class, new StyleCellRenderer() );
Vector <Object> v1 = new Vector <Object> ( );
v1.add("WF1/Power");
v1.add (Color.red);
v1.add(3);
v1.add(5);
Vector <Object> v2 = new Vector <Object> ( );
v2.add ("WF1/Power Max");
v2.add (Color.blue);
v2.add (1);
v2.add (2);
model.addRow (v1);
model.addRow (v2);
table.createDefaultColumnsFromModel();
JScrollPane scrollPane = new JScrollPane (table);
frame.add (scrollPane, BorderLayout.CENTER);
frame.setSize (600, 150);
frame.setVisible (true);
}
}
Code:
package de.iset.test.colortable;
import java.awt.Color;
import java.util.Vector;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
public class EditChartTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -4021085690657315775L;
private Vector <TableModelListener> listeners = new Vector <TableModelListener> ( );
private Vector <Vector <Object>> dataEntries = new Vector <Vector <Object>> ( );
public void addTableModelListener (TableModelListener l)
{
listeners.add (l);
}
public void removeTableModelListener (TableModelListener l)
{
listeners.remove (l);
}
public Class <?> getColumnClass (int columnIndex)
{
switch (columnIndex)
{
case 0:
return String.class;
case 1:
return Color.class;
case 2:
return Integer.class;
case 3:
return Integer.class;
default:
return null;
}
}
public int getColumnCount ( )
{
// TODO Auto-generated method stub
return 4;
}
public String getColumnName (int columnIndex)
{
switch (columnIndex)
{
case 0:
return "WindFarm & ValueType";
case 1:
return "Line-Color";
case 2:
return "Line-Thickness";
case 3:
return "Line-Style";
default:
return null;
}
}
public int getRowCount ( )
{
// TODO Auto-generated method stub
return dataEntries.size ( );
}
public Object getValueAt (int rowIndex, int columnIndex)
{
Vector<Object> temp = dataEntries.get (rowIndex);
return temp.get (columnIndex);
}
public boolean isCellEditable (int rowIndex, int columnIndex)
{
return true;
}
public void setValueAt (Object value, int rowIndex, int columnIndex)
{
Vector<Object> temp = dataEntries.get(rowIndex);
temp.set(columnIndex, value);
}
public void addRow(Vector<Object> row){
dataEntries.add (row);
}
}
Code:
package de.iset.test.colortable;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class ColorCellRenderer extends JButton implements TableCellRenderer
{
/**
*
*/
private static final long serialVersionUID = -7902363692608869680L;
public ColorCellRenderer(){
}
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
this.setBackground ((Color) value);
return this;
}
}
Code:
package de.iset.test.colortable;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class ColorCellRenderer extends JButton implements TableCellRenderer
{
/**
*
*/
private static final long serialVersionUID = -7902363692608869680L;
public ColorCellRenderer(){
}
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
this.setBackground ((Color) value);
return this;
}
}
Ich hoffe mir kann wer helfen, ich werd nämlich langsam wahnsinnig damit!
gruß keks