/ / JTable no cambiará automáticamente el tamaño de la última columna: java, swing, interfaz de usuario, jtable

JTable no cambiará automáticamente el tamaño de la última columna: java, swing, interfaz de usuario, jtable

Tengo un JTable que se coloca dentro de un JPanelque luego se coloca en un JFrame que tiene otro JPanel que tiene un ScrollPane. La idea general se puede ver a continuación si la explicación es confusa. He configurado mi JTable para que cambie automáticamente el tamaño de la última columna, pero nunca cambia de tamaño automáticamente. ¿Cuál es el problema?

JFrame -> JPanel -> JTable
-> JPanel -> Panel de desplazamiento

Mi código:
this se refiere a mi clase que se extiende 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);

Respuestas

2 para la respuesta № 1

Su JTable debe colocarse dentro de un JScrollPane para que el cambio de tamaño funcione correctamente. Estás colocando el JTable directamente en un JPanel.

tablePanel.add(new JScrollPane(status), BorderLayout.LINE_START):