JTable con barra di scorrimento orizzontale
-
20-09-2019 - |
Domanda
C'è un modo per consentire orizzontale barra di scorrimento in caso di necessità?
La situazione era in quanto tale: ho un JTable
, una delle celle, conservato una lunga lunghezza dei dati. Quindi, ho bisogno di avere orizzontale barra di scorrimento.
Qualcuno ha idea su questo?
Soluzione
In primo luogo, aggiungere il JTable
all'interno di un JScrollPane
e impostare i criteri per l'esistenza di barre di scorrimento:
new JScrollPane(myTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Poi, indicano che il JTable non deve auto-ridimensionare le colonne impostando la modalità AUTO_RESIZE_OFF
:
myJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Altri suggerimenti
Imposta il AutoResizeMode
per OFF
nelle proprietà del jTable
Per riferimento, ecco una minimo esempio della accettato approccio . Inoltre,
-
È possibile regolare le dimensioni delle singole colonne come mostrato nella Impostazione e modifica larghezza della colonna , così come qui e < a href = "https://stackoverflow.com/q/31977754/230513"> qui .
-
È possibile regolare la dimensione complessiva del riquadro racchiude scorrimento come mostrato nella L'implementazione di un client scorrimento-Savvy , così come qui e qui .
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://stackoverflow.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);
}
}
Per me funziona:
table.setAutoscrolls (true);