2015-04-25 63 views
0

我有一些Jpanel中的项目,然后推到顶部并用作基本搜索引擎的工具栏。我有一个问题,由于没有足够的空间,我的最后一个组合框没有显示。但是,左侧有很多空的空间,我需要一切来移动填充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/

+0

什么是工具栏在这里,它是JPanel? – swapnil7

+0

@ swapnil7 yep,它在不同的类中声明 – Corzuu

回答

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 

希望这有助于

+0

Yay!谢谢,这将他们全部留下,但历史组合框仍然不显示,但当我删除另一个项目。然后显示组合框是非常大的反正我可以限制宽度? – Corzuu

+0

好吧,你可以使用'setPreferredSize(new Dimension(x,y));',但不建议硬编码大小,因为它在不同的分辨率下显示不同。可能有人可以帮助我们在这里 –

0

也许这会工作。

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

编辑

对不起它是MainBrowser.toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));

+0

获取错误“方法集(FlowLayout)未定义为类型JPanel” – Corzuu

+0

对不起,它是'setLayout(new FlowLayout(FlowLayout.LEFT))',所以使用'MainBrowser.toolbar.setLayout(new FlowLayout(FlowLayout.LEFT))' – Ved

0

你可以尝试使用BoxLayout的,如:

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

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

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

您可以通过使用限制组合框的宽度:

comboBox.setPrototypeDisplayValue("XXXXXXXXXX"); 

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

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

+0

谢谢,这工作设置宽度我已经授予答案的第一人,但你也帮助了很多! – Corzuu

+0

@Corzuu,看看'JTextField API'。有一个构造函数允许您指定文本字段的列数。也使用适当的变量名称。变量名称不应以大写字符开头。 – camickr