我正在尝试将标签添加到面板的北部和南部,并将面板添加到我的框架的中心。如果我自己没有指定标签的大小,那么程序是完美的,但是当我给它们特定的尺寸时:
label.setPreferredSize(di);
label2.setPreferredSize(di);
它变得凌乱!然而,面板和框架的尺寸更大,(100,100)
任何想法?
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class BorderLayoutDemo2 {
public static void main(String args[])
{
Frame frame = new Frame();
}
}
class Frame extends JFrame
{
private static final long serialVersionUID = 1L;
public Frame(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension di = new Dimension(50,50);
Dimension dim = new Dimension(200,200);
JPanel panel = new JPanel();
panel.setPreferredSize(dim);
JLabel label = new JLabel("Here is my label");
JLabel label2 = new JLabel("Here is my label2");
JMenuBar menu = new JMenuBar();
JMenu setting = new JMenu("Setting");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem add = new JMenuItem("Add");
setting.add(add);
setting.add(exit);
menu.add(setting);
label.setPreferredSize(di);
label2.setPreferredSize(di);
panel.add(label,BorderLayout.NORTH);
panel.add(label2,BorderLayout.SOUTH);
add(menu,BorderLayout.NORTH);
add(panel,BorderLayout.CENTER);
pack();
setVisible(true);
}
}
答案 0 :(得分:4)
当您添加组件时,您假设面板的布局为BorderLayout
,即:panel.add(label,BorderLayout.NORTH);
。但是,您没有设置布局,而JPanel
使用的FlowLayout
是default。你可以像这样解决它:
JPanel panel = new JPanel(new BorderLayout());