填写JPanel

时间:2015-04-25 15:35:42

标签: java swing

我在Jpanel中有一些项目,然后将其推到顶部并用作基本搜索引擎的工具栏。我有一个问题,我的最后一个组合框没有显示,因为没有足够的空间。但是,左侧有很多空的空间,我需要移动所有东西来填充JPanel,这样才能显示出来。所以我的问题是如何让这些物品从最左边开始并向右转,谢谢。

    //Labels for combo boxes
    JLabel Bookmarklbl = new JLabel("Bookmarks:");
    JLabel Historylbl = new JLabel("History:");

    FlowLayout flowLayout = new FlowLayout();
    MainBrowser.toolBar.setLayout(flowLayout);

    //Adding items to Panel
    MainBrowser.toolBar.add(Bookmarklbl);
    MainBrowser.toolBar.add(BookmarkList);
    MainBrowser.toolBar.add(bookmarkbtn);
    MainBrowser.toolBar.add(back);
    MainBrowser.toolBar.add(forward);
    MainBrowser.toolBar.add(MainBrowser.addressbar);
    MainBrowser.toolBar.add(home);
    MainBrowser.toolBar.add(reload);
    MainBrowser.toolBar.add(Historylbl);
    MainBrowser.toolBar.add(historyList);

    //Set the things added from left to right
    MainBrowser.main.setComponentOrientation(
            ComponentOrientation.LEFT_TO_RIGHT);

    //Add Panel to main frame 
    MainBrowser.main.add(MainBrowser.toolBar,BorderLayout.NORTH);

条形图如何显示:http://postimg.org/image/l314iw6eh/

4 个答案:

答案 0 :(得分:1)

假设toolbarJPanel且正在使用FlowLayout,则此代码可能会对您有所帮助,

    JPanel panel = new JPanel(); // your toolbar panel
    FlowLayout flowLayout = (FlowLayout) panel.getLayout(); // flowlayout
    flowLayout.setAlignment(FlowLayout.LEFT); // alignment to left
    contentPane.add(panel, BorderLayout.NORTH); // adding this panel to original frame

希望这有帮助

答案 1 :(得分:1)

FlowLayout的默认值为CENTER。如果没有足够的空间显示所有组件,则组件将被包装到下一行。将对齐更改为LEFT不会解决此问题(只是组件的默认对齐方式)。

  

显示组合框是非常大的,无论如何我可以限制宽度?

您可以使用以下方法限制组合框的宽度:

comboBox.setPrototypeDisplayValue( "XXXXXXXXXX" );

这将限制组合框的首选大小,以便它可以显示在工具栏上。

但是,您仍然希望在显示弹出窗口时看到项目的全文。为此,您可以使用Combo Box Popup

答案 2 :(得分:0)

也许这会奏效。

MainBrowser.toolbar.set(new FlowLayout(FlowLayout.LEFT));

修改

抱歉是[{1}}

答案 3 :(得分:0)

您可以尝试使用BoxLayout,例如:

toolBar.setLayout(new BoxLayout(toolBar,BoxLayout.X_AXIS)).