我正在尝试在应用程序窗口中对齐一些表。在以下窗口中,所有3个表都必须水平填充应用程序窗口区域。而是3个表中的2个正好占据了应用程序窗口宽度的50%。
JFrame.getContentPane()
-> JTabbedPane
-> pnlInvoices = Box.createVerticalBox()
->对齐错误的组件。
对齐错误的组件是JSplitPane
,JTableHeader
和JTable
。创建该代码的代码如下:
JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
new JScrollPane(tblInvoices),
new JScrollPane(tblItems));
sp.setDividerSize(3);
sp.setDividerLocation(75);
Box pnlInvoices = Box.createVerticalBox();
pnlInvoices.add(sp);
JTable tblReport = PropertiesTableModel.createTable(irtm);
pnlInvoices.add(tblReport.getTableHeader()); // JTable must be inside JScrollPane, or else header must be added manually
pnlInvoices.add(tblReport);
//...
JTabbedPane tabs = new JTabbedPane();
//...
tabs.addTab("Τιμολόγια", pnlInvoices);
//...
getContentPane().add(tabs);
答案 0 :(得分:0)
问题已通过破解解决。但是我不明白为什么。
JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
new JScrollPane(tblInvoices),
new JScrollPane(tblItems));
sp.setDividerSize(3);
sp.setDividerLocation(75);
Box pnl = Box.createHorizontalBox(); // Hack
pnl.add(sp);
Box pnlInvoices = Box.createVerticalBox();
pnlInvoices.add(pnl);
JTable tblReport = PropertiesTableModel.createTable(irtm);
pnlInvoices.add(tblReport.getTableHeader());
pnlInvoices.add(tblReport);