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,
Puede ajustar el tamaño de las columnas individuales como se muestra en Configuración y cambio de ancho de columna , así como here y here .
Puede ajustar el tamaño general del panel de desplazamiento adjunto como se muestra en Implementación de Scrolling-Savvy Client , así como here y here .
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);