错误的垂直框对齐

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误的垂直框对齐相关的知识,希望对你有一定的参考价值。

我试图在我的应用程序窗口中对齐一些表。在以下窗口中,所有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

答案

问题通过黑客解决了。但我不明白为什么。

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

以上是关于错误的垂直框对齐的主要内容,如果未能解决你的问题,请参考以下文章

我想在选择框中垂直对齐文本

如何垂直对齐颜色框中的文本? [复制]

WPF文本框中的垂直对齐

如何在选择框内垂直对齐文本? (不是在谈论选择框或 div 框)

css 垂直对齐框

我如何使所有文本框在wpf中对齐在同一垂直位置?