JTable مع شريط التمرير الأفقي
-
20-09-2019 - |
سؤال
هل هناك أي طريقة لتمكين شريط التمرير الأفقي عند الضرورة؟
وكان الوضع كالآتي:لقد قمت JTable
, ، إحدى الخلايا، تخزن كمية طويلة من البيانات.وبالتالي، أنا بحاجة إلى شريط التمرير الأفقي.
أي شخص لديه فكرة عن هذا؟
المحلول
أولا، إضافة JTable
الخاص داخل JScrollPane
وتعيين سياسة لوجود أشرطة التمرير:
new JScrollPane(myTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
وبعد ذلك، تشير إلى أن JTable الخاص بك يجب أن لا لصناعة السيارات في تغيير حجم الأعمدة من خلال تحديد طريقة AUTO_RESIZE_OFF
:
myJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
نصائح أخرى
ومجموعة من AutoResizeMode
إلى OFF
في خصائص jTable
للإشارة، هنا أ الحد الأدنى من المثال التابع النهج المقبول.علاوة على ذلك،
يمكنك ضبط حجم الأعمدة الفردية كما هو موضح في ضبط وتغيير عرض الأعمدة, ، إلى جانب هنا و هنا.
يمكنك ضبط الحجم الكلي لجزء التمرير المرفق كما هو موضح في تنفيذ عميل التمرير والدهاء, ، إلى جانب هنا و هنا.
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);
}
}
وبالنسبة لي كان يعمل:
<اقتباس فقرة>وtable.setAutoscrolls (صحيح)؛
اقتباس فقرة>