垂直框对齐错误

时间:2019-03-11 22:35:16

标签: java swing

我正在尝试在应用程序窗口中对齐一些表。在以下窗口中,所有3个表都必须水平填充应用程序窗口区域。而是3个表中的2个正好占据了应用程序窗口宽度的50%。

JFrame.getContentPane()-> JTabbedPane-> pnlInvoices = Box.createVerticalBox()->对齐错误的组件。

对齐错误的组件是JSplitPaneJTableHeaderJTable。创建该代码的代码如下:

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);

The result in application window

1 个答案:

答案 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);