29. november 2002 - 18:28Der er
6 kommentarer og 1 løsning
JTabel Listener
Hej Jeg har en tabel som indeholder 25 rækker og 13 kolonner. Jeg vil så gerne at hvis nu fx brugeren begynder at skrive i en tom række, så skal en række funktioner udføres. Fx så skal der skrives et id nummer i kolonne1. Jeg tror det er noget med "getRow" og "Listener" men jeg er for det første ikke sikker og ved ikke hvodan jeg skal bruge det. Jeg har kigget lidt i de andre spg, men kan ikke lige finde noget.
Så spørgsmålet er hvordan udfører man en eller flere funktioner når brugeren klikker og begynder at skrive i en række?
Jeg vil gerne sende Tabellen hvis det skulle være nødvendigt.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
// Dette er det essentielle: ListSelectionModel selectionModel = table.getSelectionModel(); selectionModel.addListSelectionListener( new ListSelectionListener() { /* Metoden definerer hvad vi gør når tabellen vælges * du skal definere denne metode, da du implementerer ListSelectionListener */ public void valueChanged( ListSelectionEvent event ) {
Det ser godt det vil jeg arbejde lidt med i eftermiddag, Hvis jeg i fx ændre dine startværdier til: -------------- String dataValues[][] = { { "", "", "" }, { "", "", "" }, { "", "", "" }, { "", "", "" } };
--------------- så kan jeg vel godt udfører en metode i denne del af koden ------------ // Hvad er der klikket på? String string = (String)model.getValueAt( table.getSelectedRow(), table.getSelectedColumn() );
public class TableCellRenderTest { public static void main(String[] args) {
JFrame frame = new TableCellRenderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* *Sætter JFrame i midten af skærmen */ int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height= Toolkit.getDefaultToolkit().getScreenSize().height; frame.setLocation((width-frame.getSize().width)/2,(height-frame.getSize().height) / 2);
frame.show(); } }
class TableCellRenderFrame extends JFrame {
public TableCellRenderFrame() { setTitle("TableEditTest"); setSize(600, 250);
TableModel model = new MyTableModel(); JTable table = new JTable(model);
table.setDefaultRenderer(Color.class, new ColorTableCellRenderer()); table.setDefaultEditor(Color.class, new ColorTableCellEditor());
JComboBox combo = new JComboBox(); for (int i = 0; i <= 42; i++) combo.addItem(new Integer(i));
public String getColumnName(int c) { return columnNames[c]; }
public Class getColumnClass(int c) { return cells[0][c].getClass(); }
public int getColumnCount() { return cells[0].length; }
public int getRowCount() { return cells.length; }
public Object getValueAt(int r, int c) { return cells[r][c]; }
public void setValueAt(Object obj, int r, int c) { cells[r][c] = obj; }
public boolean isCellEditable(int r, int c) { /* * Kun disse felter vil jeg lade brugeren editere: */ return c == NAME_COLUMN || c == COMBO_COLUMN || c == CHECKBOX_COLUMN || c == COLOR_COLUMN; }
public static final int NAME_COLUMN = 0; public static final int COMBO_COLUMN = 2; public static final int CHECKBOX_COLUMN = 3; public static final int COLOR_COLUMN = 4;
/* * JTable data: */ private Object[][] cells = { { "Howdy", new Double(1337), new Integer(0), Boolean.FALSE, Color.yellow }, { "Dav", new Double(4711), new Integer(0), Boolean.FALSE, Color.yellow }, { "Jow jow", new Double(42), new Integer(1), Boolean.FALSE, Color.blue } };
Der er en fejl i det ovenstående.. du får lige det hele igen.. det er nemmere :) import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;
public class TableCellRenderTest { public static void main(String[] args) {
JFrame frame = new TableCellRenderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* *Sætter JFrame i midten af skærmen */ int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height= Toolkit.getDefaultToolkit().getScreenSize().height; frame.setLocation((width-frame.getSize().width)/2,(height-frame.getSize().height) / 2);
frame.show(); } }
class TableCellRenderFrame extends JFrame {
public TableCellRenderFrame() { setTitle("TableEditTest"); setSize(600, 250);
TableModel model = new MyTableModel(); JTable table = new JTable(model);
table.setDefaultRenderer(Color.class, new ColorTableCellRenderer()); table.setDefaultEditor(Color.class, new ColorTableCellEditor());
JComboBox combo = new JComboBox(); for (int i = 0; i <= 42; i++) combo.addItem(new Integer(i));
public String getColumnName(int c) { return columnNames[c]; }
public Class getColumnClass(int c) { return cells[0][c].getClass(); }
public int getColumnCount() { return cells[0].length; }
public int getRowCount() { return cells.length; }
public Object getValueAt(int r, int c) { return cells[r][c]; }
public void setValueAt(Object obj, int r, int c) { cells[r][c] = obj; }
public boolean isCellEditable(int r, int c) { /* * Kun disse felter vil jeg lade brugeren editere: */ return c == NAME_COLUMN || c == COMBO_COLUMN || c == CHECKBOX_COLUMN || c == COLOR_COLUMN; }
public static final int NAME_COLUMN = 0; public static final int COMBO_COLUMN = 2; public static final int CHECKBOX_COLUMN = 3; public static final int COLOR_COLUMN = 4;
/* * JTable data: */ private Object[][] cells = { { "Howdy", new Double(1337), new Integer(0), Boolean.FALSE, Color.yellow }, { "Dav", new Double(4711), new Integer(0), Boolean.FALSE, Color.yellow }, { "Jow jow", new Double(42), new Integer(1), Boolean.FALSE, Color.blue } };
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.