不同的窗口使用相同的代码?

hin*_*afu 1 java swing

这是"主"类(不包含主方法)

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);

  }
}
Run Code Online (Sandbox Code Playgroud)

这是MAIN类(这个包含主要方法):

public class Main {
  public static void main(String[] args) {
    new Program("Ordenamiento Recursivo");
  }
}
Run Code Online (Sandbox Code Playgroud)

每次运行应用程序时,UI组件的显示方式都不同,请参阅随附的屏幕截图.


好吧,感谢所有回复帖子的人,我完成了程序,我对最终结果非常满意,这里是:

Programa para Moquillaza

如果有人想看看代码,这里是:链接

Hov*_*els 5

问题:

  • 添加组件之前调用setVisible(true)JFrame ,这将导致程序图形的绘制不可靠,这也是您看到不同结果的原因.不要这样做,而是在将所有内容添加到顶级窗口调用它.
  • 正如其他人所说,阅读并学习使用布局管理器.