【发布时间】:2016-04-28 03:00:31
【问题描述】:
我在JScrollView 内有一个JTable 但它似乎并没有很好地对齐滚动条很小我猜这是因为alignment.Moreover 这是一个sn- p 来自真实代码:
JFrame frame = new JFrame();
frame.setResizable(false);
frame.setBounds(100, 100, 771, 453);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
panel.setBounds(10, 32, 747, 370);
frame.getContentPane().add(panel);
panel.setLayout(null);
JPanel VPanel = new JPanel();
VPanel.setBounds(297, 43, 440, 224);
panel.add(VPanel);
JTable TableV = new JTable();
TableV.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableV.getTableHeader().setReorderingAllowed(false);
DefaultTableModel Model = new DefaultTableModel(0, 0);
String header[] = new String[] { "Country", "ID", "WAN IP", "User", "OS", "Java version" };
VPanel.add(new JScrollPane(TableV, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
// just adding some data to fill the table
Model.setColumnIdentifiers(header);
//set model into the table object
TableV.setModel(Model);
//just adding some diff data to check if it scrolls down
for (int count = 1; count <= 50; count++)
{
Model.addRow(new Object[] { "data1", "data2", "data3", "data4", "data5", "data6" });
}
for (int count = 1; count <= 70; count++)
{
Model.addRow(new Object[] { "data100", "data200", "data300", "data400", "data500", "data600" });
}
frame.setVisible(true);
【问题讨论】:
-
您对空布局和
setBounds的使用现在或以后都会把您搞得一团糟,您会想摆脱新手这样做的习惯。学习布局管理器,然后使用布局管理器。 -
了解 VPanel(应重命名为
vPanel以符合 Java 命名规则)使用 FlowLayout,因此滚动窗格可能不适合其中。如果您希望滚动窗格填充它,请给它一个 BorderLayout 并添加 JScrollPane BorderLayout.CENTER。 -
如果您需要更严格的帮助,请告诉我们更多关于正在发生的事情,因为
"it is not aligning well"有点含糊。考虑张贴一张你正在看到的和你想看到的图片。最后创建并发布您的minimal reproducible example,以便我们自己实际运行您的代码。 -
感谢@HovercraftFullOfEels 刚刚编辑到 JPanel VictimPanel = new JPanel(new BorderLayout());并修复它谢谢,将了解有关布局管理器的更多信息,是的,我确实知道命名不遵循约定会起作用,我只是喜欢它的外观,这就是为什么我大多以这种方式编码但从现在开始会改变它谢谢
-
正如你所说的 BorderLayout 问题@HovercraftFullOfEels,你能知道这样可以将其标记为答案吗?
标签: java swing jtable jscrollpane