1

这是“主”类(不包含主方法)

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 组件都会以不同的方式呈现,请参阅随附的屏幕截图。


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

莫基拉萨计划

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

4

4 回答 4

5

问题:

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

不同的窗口有相同的代码?

于 2012-04-27T15:44:53.513 回答
4

请务必在 EDT 上构建 GUI。不这样做会导致不可预测的结果。

pack()在使用布局添加组件后调用,然后调用setVisible(true).

于 2012-04-27T16:23:16.973 回答
2

您的表单需要一个布局管理器,因此不应该将布局管理器设置为 null。

这里正在进行中... https://gist.github.com/2510570

几个变化。还没完结,请看下面

  1. 让 Program 扩展一个 JFrame。
  2. 已设置布局管理器。

更新最后,我在 IntelliJ 的表单设计器中解决了这个问题。

https://gist.github.com/2512197

您希望将行为附加到按钮的位置通过代码搜索要求您添加代码的注释。虽然我是在 InteliJ Ultimate 中做到这一点的(这个要花钱的),但我认为免费下载 Community Edition UI 设计器也可以绘制 Swings GUI。非常快速和容易。Netbeans 也有一个很好的 GUI 画家。

oracle.com上的 Swing 教程也值得一看。

于 2012-04-27T15:56:59.273 回答