Java 如何在JTable中获得水平滚动
我有两个问题需要问,第一,如何获得我的JTable的水平滚动,目前它收缩了所有根本不可读的列。我有20列要显示在一个表中Java 如何在JTable中获得水平滚动,java,swing,user-interface,jtable,jscrollpane,Java,Swing,User Interface,Jtable,Jscrollpane,我有两个问题需要问,第一,如何获得我的JTable的水平滚动,目前它收缩了所有根本不可读的列。我有20列要显示在一个表中 Dimension d = new Dimension(900, 800); tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF); tbl_transaction.setPreferredSize(d); tbl_transacti
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
第二,如何调整我的桌子高度宽度最大到我的屏幕大小
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
我现在的代码是
Container cp = getContentPane();
ConnectionDB con = new ConnectionDB();
tableModel = con.getRecord(DEFAULT_QUERY);
table = new JTable(tableModel);
table.setPreferredScrollableViewportSize(new Dimension(900, 500));
table.setFont(new Font("Tahoma", Font.PLAIN, 12));
scrollPane = new JScrollPane(table);
centerPanel.add(scrollPane, BorderLayout.CENTER);
centerPanel.setBorder(BorderFactory.createTitledBorder("Books:"));
cp.add("Center", centerPanel);
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
请帮助我,提前谢谢。在
JScrollPane
中添加您的JTable
,并设置滚动条
new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
符合屏幕大小的JTable
代码示例
public class TestJTableFitsScreenWidth {
public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
DefaultTableModel dtm = new DefaultTableModel(
new String[][]{
new String[] {"A", "B", "D"},
new String[] {"D", "E", "F"}
},
new String[] {"col1", "col2", "col3"});
JTable table = new JTable(dtm);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
f.getContentPane().setLayout(new BorderLayout());
f.getContentPane().add(table, BorderLayout.CENTER);
f.setVisible(true);
f.pack();
}
});
}
}
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
要防止将所有列的大小调整为
滚动窗格
大小,可以禁用自动调整大小:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
将您的滚动窗格
添加到BorderLayout
的中心应该将最大大小设置为屏幕大小,因为通常JFrame不会变大
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
要将滚动窗格
s视口的大小设置为屏幕大小,可以使用awt工具包
table.setPreferredScrollableViewportSize(Toolkit.getDefaultToolkit().getScreenSize());
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
这可能对你有帮助
Dimension d = new Dimension(900, 800);
tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF);
tbl_transaction.setPreferredSize(d);
tbl_transaction.setPreferredScrollableViewportSize(d);
对于水平滚动,请使用
JScrollPane
@johnchen902,这是JScrollPane。如何获得scoll?为了更快地获得更好的帮助,请发布一条。你所说的最大尺寸是什么意思?如果将ScrollPane
添加到BorderLayout
的中心,它将自动调整大小,JFrame的最大大小通常是屏幕大小。我正在容器中心添加JDesktopPane,JDesktopPane正在获取另一个类的对象,其中表正在设置到JScrollPane中,它正在中设置另一个容器。它不工作,我用你的修改了最后一行,我做错了什么?table.setHorizontalScrollEnabled(true)代码>试试这个是的,我有水平滚动,但是如何将滚动窗格的最大屏幕大小设置为?对不起,我仍然没有完全理解。滚动窗格应该始终处于其最大大小,还是通常较小,且最大值只是最大可能的大小?现在情况如何,应该如何?你能添加一个屏幕截图或当前状态的草图并描述它应该是什么样子吗?当我像这样设置表格尺寸“table.setPreferredScrollableViewportSize(新尺寸(500500));”时,它会根据尺寸扩展尺寸,但我希望它最大化为我的屏幕尺寸,让它更清晰一些,我的表在JScrollPane中,JScrollPane在获取contentpane的容器中。我用以下代码解决了我的问题:“Toolkit Toolkit=Toolkit.getDefaultToolkit();Dimension dim=Toolkit.getScreenSize();table.setPreferredScrollableViewportSize(新维度(dim.width,dim.height));“啊,好的,现在我知道你想要什么了。我会在我的答案中加入你的答案,这样更容易找到。(您只需将dim
设置为视口大小即可。您不必获取尺寸,然后使用其值创建新尺寸,只需使用第一个:D)