14. november 2005 - 12:42Der er
10 kommentarer og 1 løsning
Problemer med JTabel
Hej!
Vi er ved at lave et vagtplanlægningsprogram i Java. Vi er nu igang med at kode GUI. Vi overvejer at bruge JTabel til at vise vagtplanen, og har i den forbindelse nogle spørgsmål: - Hvordan undgår man at kollonnerne kan flyttes rundt? - Hvordan gør man cellerne skrivebeskyttede? - Kan man skrive flere end én linje i en celle?
Håber der er nogle der kan hjælpe. Med venlig hilsen 3 fortvivlede studerende.
Ja, det har vi kigget på, og det kan vi ikke rigtig finde hoved og hale i. Vi har brug for nogle konkrete kodeeksempler...! Dataene i tabellen henter vi fra en SQL database.
private class MyTableModel extends DefaultTableModel { public MyTableModel (Object[][] data, Object[] headers) { super (data, headers); }
public boolean isCellEditable (int row, int col) { if (col == 0) return true; else return false; } }
public static void main (String[] args) { new TestJTable().setVisible (true); } }
1) table.getTableHeader().setReorderingAllowed(false); 2) Lav egen TableModel og overskriv metoden isCellEditable 3) Ved jeg faktisk ikke lige, men det søger jeg lige på.
Tak for hjælpen - det virker. Håber du kan give svar på det sidste spørgsmål, for det er det der afgør, om vi overhovedet skal bruge JTabel. Idéen er nemlig, at hver celle skal kunne indeholde et tidsinterval og et navn på 2 forskellige linjer. Hvis det ikke kan lade sig gøre, har du så en idé til hvad vi ellers kunne bruge...? (Du får dine point når du har svaret på spørgsmål 3...!)
private class MyTableModel extends DefaultTableModel { public MyTableModel (Object[][] data, Object[] headers) { super (data, headers); }
public boolean isCellEditable (int row, int col) { return true; }
public Class getColumnClass(int columnIndex) { return String.class; } }
public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer { public MultiLineCellRenderer() { setLineWrap(true); setWrapStyleWord(true); setOpaque(true); }
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); }
if (hasFocus) { setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
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.