日期:2014-05-20  浏览次数:20694 次

让两个Jlabel位于JPanel的两端
两个Jlabel位于JPanel的两端,功能可以实现,但是如果JPanel外面在加一个JPanel,发现两个JLabel都到中间了,是什么的问题?
我的代码:
JPanel panel = new JPanel();
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
panel.setSize(new Dimension((int) screen.getWidth(), (int) (screen.getHeight() - 37 - 46)));
panel.setOpaque(true);

JPanel labelPanel = new JPanel();
labelPanel.setLayout(new BorderLayout());
labelPanel.setOpaque(true);
JLabel labelLeft = new JLabel();
labelLeft.setOpaque(true);
labelLeft.setBackground(Color.BLACK);
labelLeft.setForeground(Color.WHITE);
labelLeft.setText("22222");

JLabel labelRight = new JLabel();
labelRight.setOpaque(true);
labelRight.setBackground(Color.BLACK);
labelRight.setForeground(Color.WHITE);
labelRight.setText("333333");

labelPanel.add(labelLeft, BorderLayout.WEST);
labelPanel.add(labelRight, BorderLayout.EAST);

panel.add(labelPanel, BorderLayout.SOUTH);

// getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().add(labelPanel, BorderLayout.CENTER);

直接getContentPane().add(labelPanel, BorderLayout.CENTER); label是位于两端的,但是getContentPane().add(panel, BorderLayout.CENTER);  label就位于中间了,是什么的问题?

------解决方案--------------------
既然可以setLayout
那么你不加这句话调用
getLayout()看看返回什么。,
------解决方案--------------------
JPanel的默认就是FlowLayout。

使用javax.swing.Box
Box box = Box.createHorizontalBox();
box.add(label1);
box.add(Box.createHorizontalGlue());
box.add(lable2);