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 クラスです (これには main メソッドが含まれています)。

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

アプリケーションを実行するたびに、UI コンポーネントの表示が異なります。添付の​​スクリーン ショットを参照してください。


さて、投稿に返信してくれた皆さんのおかげで、私はプログラムを終了し、最終結果に非常に満足しています。これが次のとおりです。

Programa para Moquillaza

誰かがコードを見たい場合は、ここにあります:リンク

4

4 に答える 4

5

問題:

  • コンポーネントを追加する前にsetVisible(true)JFrameを呼び出すと、プログラムのグラフィックスの描画が不安定になり、結果が異なることがあります。これを行うのではなく、最上位の Window にすべてを追加した後に呼び出してください。
  • 他の人が言っているように、レイアウトマネージャーを読んで使い方を学びましょう。
于 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. プログラムにJFrameを拡張させます。
  2. レイアウトマネージャーを設定しました。

更新最後に、IntelliJのフォームデザイナーでこれをノックアップしました。

https://gist.github.com/2512197

ボタンに動作を付加する場合は、コードを検索して、コードの追加を求めるコメントを探します。これはInteliJUltimate(これはお金がかかります)で行いましたが、CommunityEditionUIデザイナーを無料でダウンロードしてSwingsGUIもペイントできると思います。非常に迅速かつ簡単です。Netbeansには優れたGUIペインターもあります。

oracle.comのSwingチュートリアルも確認する価値があります。

于 2012-04-27T15:56:59.273 に答える