BorderLayout.CENTER和BorderLayout.EAST之间的JSeparator?

时间:2014-10-29 15:06:47

标签: java swing user-interface jframe

我想用BorderLayout创建一个程序,其中中心和东部以图形方式分开。我尝试了以下操作,但不幸的是,分隔符位于JFrame的左侧,而不是在centerPanel和rightPanel之间。

setLayout(new BorderLayout());

JPanel centerPanel = new JPanel();
JPanel rightPanel = new JPanel();

centerPanel.add(new JLabel("center"));
rightPanel.add(new JLabel("right"));

getContentPane().add(centerPanel, BorderLayout.CENTER);
getContentPane().add(rightPanel, BorderLayout.EAST);

getContentPane().add(new JSeparator(JSeparator.VERTICAL), BorderLayout.LINE_START);

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:4)

您可以使用Nested Layout方法为中心面板提供BorderLayout,并将垂直分隔符添加到此内容,而不是内容窗格:

JPanel centerPanel = new JPanel(new BorderLayout());
centerPanel.add(new JLabel("center"), BorderLayout.CENTER);
centerPanel.add(new JSeparator(JSeparator.VERTICAL), BorderLayout.LINE_END);

JPanel rightPanel = new JPanel();
rightPanel.add(new JLabel("right"));

getContentPane().add(centerPanel, BorderLayout.CENTER);
getContentPane().add(rightPanel, BorderLayout.LINE_END);

其他说明

1)自Java 1.4使用BorderLayout以来,强烈建议使用新常量:

PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER

来自How to Use BorderLayout教程(粗体文字):

  

在JDK 1.4版之前,各个领域的首选名称是   不同的,从指南针的点(例如,   最高区域的BorderLayout.NORTH到word的版本   我们在示例中使用的常量。 我们的示例使用的常量是   首选,因为它们是标准的,并使程序可以适应   具有不同方向的语言。

2)如果您未能添加任何与Swing相关的功能,请避免扩展Swing组件。参见: