【发布时间】:2013-03-24 20:09:45
【问题描述】:
我想将 JPanel 分成左右两个部分。我怎么做 ?之后,我将在左右半部分放置面板。
【问题讨论】:
我想将 JPanel 分成左右两个部分。我怎么做 ?之后,我将在左右半部分放置面板。
【问题讨论】:
如果您使用JSPlitPane,这很容易。
【讨论】:
有两种方法
使用网格布局
使用 JSplitPane(带隐藏分隔符)
【讨论】:
JPanel panel = new JPanel(new BorderLayout());
panel.add(c1, BorderLayout.WEST);
panel.add(c2, BorderLayout.EAST);
JPanel panel = new JPanel(new GridLayout(1, 2));
panel.add(c1);
panel.add(c2);
【讨论】:
如果不需要调整它们的大小,您只需使用BorderLayout 并将面板插入BorderLayout.EAST 和BorderLayout.WEST:
JPanel panel = new JPanel( new BorderLayout() );
panel.add( leftPanel, BorderLayout.WEST );
panel.add( rightPanel, BorderLayout.EAST );
您还可以考虑使用JSplitPane,它允许调整 UI 大小:
JSplitPane pane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT,
leftPanel, rightPanel );
【讨论】:
BorderLayout.LINE_START 和BorderLayout.LINE_END :)
使用 JSplitPane 或 GridLayout
【讨论】:
您可以按照 Costis Aivalis 的建议使用 SplitPane。
或者
在 JPanel 上使用 Border Layout Manager。
将左侧组件放在 WEST 侧,将右侧组件放在布局管理器的 EAST 侧。
JPanel panel = new JPanel(new BorderLayout());
panel.add(c1, BorderLayout.WEST);
panel.add(c2, BorderLayout.EAST);
【讨论】:
JPanel leftPanel = new JPanel();
JPanel rightPanel = new JPanel();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
【讨论】:
JPanel example = new JPanel(new GridLayout(1,2));
example.add(p1);
example.add(p2);
【讨论】:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class Display{
JFrame frame=new JFrame("Drawing");
North north;
South south;
East east;
West west;
Center center;
public int width=600,height=600;
public Display() {
// TODO Auto-generated constructor stub
frame.setSize(width,width);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
north=new North(frame);
south=new South(frame);
east=new East(frame);
west=new West(frame);
center=new Center(frame);
frame.setLayout(new BorderLayout());
JSplitPane pane2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,west,east);
frame.add(pane2);
frame.setVisible(true);
}
}
【讨论】: