首先,我必须说我3天前才开始用Java编程。
所以请耐心等待,并尝试给我一个详细的解释。
所以我尝试使用Swing创建这个演示GUI。我只是想在编写完整的设计之前首先测试不同组件的布局。所以我写了这个小代码,为JPanel添加了3个按钮。
import javax.swing.*;
import java.awt.*;
public class demoGUI_v1{
JButton button1,button2,button3;
JFrame frame;
JPanel panel,panel2;
public static void main(String[] args){
demoGUI_v1 gui = new demoGUI_v1();
gui.framework();
}
public void framework(){
frame = new JFrame();
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
panel2 = new JPanel();
button1 = new JButton("Button1");
button2 = new JButton("Button2");
button3 = new JButton("Button3");
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
panel2.add(BorderLayout.CENTER,panel);
frame.getContentPane().add(panel, BorderLayout.WEST);
frame.setVisible(true);
}
}
答案 0 :(得分:1)
添加一些垂直胶水,使组件垂直居中:
panel.add(Box.createVerticalGlue());
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(Box.createVerticalGlue());
答案 1 :(得分:0)
与您的问题没有直接关系,但是:
frame.getContentPane().add(BorderLayout.WEST,panel);
请勿使用add(...)方法的格式。正如API所说:
此方法自1.1起已过时。请改用方法add(Component,Object)。
此外,由于JDK4,您不需要获取内容窗格。所以你可以使用:
frame.add(panel, BorderLayout.LINE_START); // preferred over "WEST"
类名应以大写字母开头,不应在类名中使用“_”。再次,只需查看API即可查看所使用的类名。不要自己制定约定。
我建议您从原始代码获得的教程非常陈旧。我建议您首先使用Swing tutorial作为示例和解释。本教程涵盖了所有布局管理器,应该有助于解释为什么Eric的建议有效。
答案 2 :(得分:0)
在这里,您可以通过更简单的方式实现所需:
public void framework(){
frame = new JFrame();
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
panel2 = new JPanel();
button1 = new JButton("Button1");
button2 = new JButton("Button2");
button3 = new JButton("Button3");
panel.add(Box.createVerticalGlue());
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(Box.createVerticalGlue());
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
frame.getContentPane().add(panel, BorderLayout.LINE_START);
frame.setVisible(true);
}