这是“主”类(不包含主方法)
import javax.swing.*;
import java.awt.*;
//import java.lang.Object;
//import java.awt.event.ActionListener;
//import java.awt.event.;
public class Program {
public JFrame frame;
public JPanel header;
public JPanel text;
public JPanel body;
public JTextField input;
public JButton agregar;
public List listA;
public List listB;
public Program(String title) {
frame = new JFrame(title);
frame.setSize(500,600);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
header = new JPanel();
header.setBackground(new Color(255,204,50));
header.setBounds(0,0,500,100);
text = new JPanel();
text.setBackground(new Color(255,204,100));
text.setBounds(0,100,500,50);
text.setLayout(null);
//Inicializando la "entrada"
input = new JTextField(20);
input.setBounds(50,13,300,25);
text.add(input);
agregar = new JButton();
agregar.setBounds(360,12,80,25);
agregar.setText("Agregar");
text.add(agregar);
//Listo
body = new JPanel();
body.setBackground(new Color(255,204,150));
body.setBounds(0,150,500,450);
//Lo que está dentro del body
listA = new List(20);
body.add(listA);
listB = new List(20);
body.add(listB);
//Listo
//Añadir todos los paneles al frame principal
frame.add(header);
frame.add(text);
frame.add(body);
}
}
这是MAIN类(这个包含主要方法):
public class Main {
public static void main(String[] args) {
new Program("Ordenamiento Recursivo");
}
}
每次运行应用程序时,UI组件的显示方式都不同,请参阅随附的屏幕截图。
好吧,感谢所有回复帖子的人,我完成了程序,我对最终结果非常满意,现在是:
如果有人想查看代码,请点击此处:Link
答案 0 :(得分:5)
问题:
setVisible(true)
添加组件,这将导致您的程序图形绘制不可靠,这也是您看到不同的原因结果。不要这样做,而是在之后将它全部添加到顶级窗口中,然后将其命名为。答案 1 :(得分:4)
具有相同代码的不同窗口?
我认为通过实现CardLayout
我建议不要打开新的Top-Level Container,只有在确实有重要原因才能使用JDialog or JOptionPane
答案 2 :(得分:4)
确保在EDT上构建GUI。不这样做会导致不可预测的结果。
使用布局添加组件后调用pack()
,然后调用setVisible(true)
。
答案 3 :(得分:2)
您需要一个表单的布局管理器,因此将布局管理器设置为null不是要做的事情。
此处正在进行中...... https://gist.github.com/2510570
一些变化。尚未完成,但请查看以下内容
更新 最后,我在IntelliJ的表单设计器中敲了这个。
https://gist.github.com/2512197
您希望将行为附加到按钮的位置搜索要求您添加代码的注释的代码。虽然我在InteliJ Ultimate(这个花钱)这样做了,但我认为免费下载Community Edition UI设计器也可以绘制Swings GUI。非常快速和容易。 Netbeans也有一个很好的GUI画家。
oracle.com上的Swing教程值得回顾。