今天的问候,我有一个JFrame和一个名为panelMain的Jpanel。我所有的框架和面板设置都很完美。我已将panelMain的Layout设置为BorderLayout。我现在创建了另一个名为panel1的面板。panel1的布局为空。我在panel1中添加了一些按钮(它的布局为空(。然后我将panel1添加到panelMain的西部。当我运行程序时,panelMain出现了,但panel1没有。然后我将panel1的Layout从null更改为FlowLayout,然后它出现在panelMain的西侧。我不知道在BorderLayout中放置空布局时会遇到什么问题,有人能帮我吗。
JPanel panelMain = new JPanel();
JPanel panelWEST = new JPanel();
JButton button = new JButton();
JButton button2 = new JButton();
Constructor(){
setContentPane(panelMain);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(Frame.MAXIMIZED_BOTH);
panelMain.setLayout(new BorderLayout());
panelMain.setBackground(Color.CYAN);
panelWEST.setLayout(null);
button.setBounds(50,50,200,200);
button.setText("West Button1");
button2.setBounds(50,300,200,200);
button2.setText("West Button2");
panelWEST.setBackground(Color.PINK);
panelWEST.add(button);
panelWEST.add(button2);
panelMain.add(panelWEST,BorderLayout.WEST);
不要使用空布局!!!Swing设计用于布局管理器。
使用随机数从来都不是一个好主意,当你试图猜测组件的大小时,这正是你正在做的。
每个Swing组件都有责任确定自己喜欢的大小。布局管理器然后使用这些信息来设置添加到面板的组件的大小/位置。当您使用空布局时,您将失去此功能。
作为一种解决方案,你可以做一些类似的事情:
JPanel buttonPanel = new JPanel( new GridLyaout( 0, 1) );
buttonPanel.add(button1);
buttonPanel.add(button2);
JPanel west = new JPanel( new BorderLayout() );
west.add(buttonPanel, BorderLayout.PAGE_START);
panelMain.add(west, BorderLayout.LINE_START);
如果您想在Panel按钮的左侧留出空间,则可以使用EmptyBorder
。阅读Swing教程中的工作示例。上有区域部分
- 如何使用边框
- 布局管理器的可视化指南