Ich habe eine JTable, die sich in einem JPanel befindetDieses wird dann in einen JFrame mit einem anderen JPanel mit einem ScrollPane eingefügt. Die allgemeine Idee kann unten gesehen werden, wenn die Erklärung verwirrend ist. Ich habe mein JTable so eingestellt, dass es die Größe der letzten Spalte automatisch ändert, aber niemals die Größe. Worin besteht das Problem?
JFrame -> JPanel -> JTable
-> JPanel -> Bildlauffenster
Mein Code:
this
bezieht sich auf meine Klasse, die sich erstreckt JFrame
this.setLayout(new BorderLayout());
JTextArea log = new JTextArea(20, 50);
log.setEditable(false);
JScrollPane logScrollPane = new JScrollPane(log);
String[] configRow = {"Config File", "Not Loaded"};
String[] logRow = {"Log File" , "Not Loaded"};
DefaultTableModel dtm = new DefaultTableModel();
dtm.addColumn("");
dtm.addColumn("");
dtm.addRow(configRow);
dtm.addRow(logRow);
JTable status = new JTable(dtm);
status.setTableHeader(null);
status.setShowGrid(false);
status.setEnabled(false);
status.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
JPanel tablePanel = new JPanel();
tablePanel.setLayout(new BorderLayout());
tablePanel.add(status, BorderLayout.LINE_START);
JPanel logPanel = new JPanel();
logPanel.add(logScrollPane);
this.add(tablePanel, BorderLayout.NORTH);
this.add(logPanel, BorderLayout.SOUTH);
Antworten:
2 für die Antwort № 1Ihre JTable muss sich in einem JScrollPane befinden, damit die Größenänderung ordnungsgemäß funktioniert. Sie platzieren die JTable direkt auf einem JPanel.
tablePanel.add(new JScrollPane(status), BorderLayout.LINE_START):