JPanel,调整大小的问题
JPanel, problems with resizing
我是新手。
试图使自动调整边框。我用 2 个面板在我的框架上做了边框。我在第一个面板中添加了带边框的面板。
我想要从所有边缘后退的边框。在此边框面板中,我还添加了文本面板和按钮。
当我展开 window 或调整其大小时,带边框的面板也会调整大小。但是当我使用 BorderLayout 时,边缘没有缩进。
public class App {
private JFrame frame;
private JPanel panel;
private JPanel panel_1;
private JTextField textField;
private JButton addBtn;
public static void main(String args[]) {
App app = new App();
app.initialize();
app.frame.pack();
app.frame.setVisible(true);
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
panel.setLayout(new BorderLayout(0, 0));
panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(784, 40));
panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.add(panel_1, BorderLayout.CENTER);
textField = new JTextField();
textField.setPreferredSize(new Dimension(6, 24));
panel_1.add(textField);
textField.setColumns(50);
addBtn = new JButton("Add");
addBtn.setPreferredSize(new Dimension(70, 24));
panel_1.add(addBtn);
}
}
这是 BorderLayout - http://snag.gy/S43C2.jpg。
我还尝试在面板中使用 FlowLayout - http://snag.gy/ndjDG.jpg
你能帮帮我吗?
问题是因为您在添加到 BorderLayout.NORTH
的面板上设置了边框。当您调整 window 大小时,BorderLayout.NORTH
部分只会水平调整大小,这就是边框无法正确调整大小的原因。
public static void main(String args[]) {
JavaApplication11 app = new JavaApplication11();
app.initialize();
app.frame.pack();
app.frame.setVisible(true);
}
private JFrame frame;
private JPanel panel;
private JTextField textField;
private JButton addBtn;
private void initialize() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.add(panel);
Border border = new CompoundBorder(new EmptyBorder(5, 10, 15, 20), new LineBorder(Color.BLACK));
panel.setBorder(border);
textField = new JTextField(50);
panel.add(textField);
addBtn = new JButton("Add");
panel.add(addBtn);
}
我假设这就是您要创建的 GUI。
要创建此 GUI,您需要使用具有多个 Swing 布局管理器的多个 JPanel。
这是我将使用的 Swing 组件的层次结构。
JFrame - border layout
JPanel - main panel, border layout
JPanel - text, button panel, border layout, border north
JTextField - border center
JButton - border east
JScrollPane - border center
JTable
JPanel - button panel, flow layout, border south
JButton (3)
您可以通过在 JPanel 和 JScrollPane 上设置空边框来获得间距。空边框可以任意宽。
我是新手。 试图使自动调整边框。我用 2 个面板在我的框架上做了边框。我在第一个面板中添加了带边框的面板。
我想要从所有边缘后退的边框。在此边框面板中,我还添加了文本面板和按钮。 当我展开 window 或调整其大小时,带边框的面板也会调整大小。但是当我使用 BorderLayout 时,边缘没有缩进。
public class App {
private JFrame frame;
private JPanel panel;
private JPanel panel_1;
private JTextField textField;
private JButton addBtn;
public static void main(String args[]) {
App app = new App();
app.initialize();
app.frame.pack();
app.frame.setVisible(true);
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
panel.setLayout(new BorderLayout(0, 0));
panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(784, 40));
panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.add(panel_1, BorderLayout.CENTER);
textField = new JTextField();
textField.setPreferredSize(new Dimension(6, 24));
panel_1.add(textField);
textField.setColumns(50);
addBtn = new JButton("Add");
addBtn.setPreferredSize(new Dimension(70, 24));
panel_1.add(addBtn);
}
}
这是 BorderLayout - http://snag.gy/S43C2.jpg。 我还尝试在面板中使用 FlowLayout - http://snag.gy/ndjDG.jpg
你能帮帮我吗?
问题是因为您在添加到 BorderLayout.NORTH
的面板上设置了边框。当您调整 window 大小时,BorderLayout.NORTH
部分只会水平调整大小,这就是边框无法正确调整大小的原因。
public static void main(String args[]) {
JavaApplication11 app = new JavaApplication11();
app.initialize();
app.frame.pack();
app.frame.setVisible(true);
}
private JFrame frame;
private JPanel panel;
private JTextField textField;
private JButton addBtn;
private void initialize() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.add(panel);
Border border = new CompoundBorder(new EmptyBorder(5, 10, 15, 20), new LineBorder(Color.BLACK));
panel.setBorder(border);
textField = new JTextField(50);
panel.add(textField);
addBtn = new JButton("Add");
panel.add(addBtn);
}
我假设这就是您要创建的 GUI。
要创建此 GUI,您需要使用具有多个 Swing 布局管理器的多个 JPanel。
这是我将使用的 Swing 组件的层次结构。
JFrame - border layout
JPanel - main panel, border layout
JPanel - text, button panel, border layout, border north
JTextField - border center
JButton - border east
JScrollPane - border center
JTable
JPanel - button panel, flow layout, border south
JButton (3)
您可以通过在 JPanel 和 JScrollPane 上设置空边框来获得间距。空边框可以任意宽。