studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java swing jtable jscrollpane jscrollbar

java - para - manual de programacion android pdf



JTable con barra de desplazamiento horizontal (4)

¿Hay alguna manera de habilitar la barra de desplazamiento horizontal siempre que sea necesario?

La situación era así: tengo una JTable , una de las celdas, que almacenaba una gran cantidad de datos. Por lo tanto, necesito tener una barra de desplazamiento horizontal.

Alguien tiene idea sobre esto?


Como referencia, aquí hay un ejemplo mínimo del enfoque aceptado . Además,

import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; /** * @see https://.com/a/37318673/230513 */ public class Test { private void display() { JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); TableModel model = new AbstractTableModel() { private static final int N = 32; @Override public int getRowCount() { return N; } @Override public int getColumnCount() { return N; } @Override public Object getValueAt(int rowIndex, int colIndex) { return "R" + rowIndex + ":C" + colIndex; } }; JTable table = new JTable(model) { @Override public Dimension getPreferredScrollableViewportSize() { return new Dimension(320, 240); } }; table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); f.add(new JScrollPane(table)); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Test()::display); } }


Establezca AutoResizeMode en OFF en las propiedades de la jTable


Para mí funciona:

table.setAutoscrolls (true);


Primero, agregue su JTable dentro de JScrollPane y configure la política para la existencia de barras de desplazamiento:

new JScrollPane(myTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

Luego, indique que su JTable no debe cambiar automáticamente el tamaño de las columnas configurando el modo AUTO_RESIZE_OFF :

myJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);