0

私はJavaを初めて使用し、基本的なSwingアプリケーションを開発しようとしていました。のボタンの位置を設定したかったのJFrameです。私はこれを行おうとしましたが、これを行うことができませんでした。これは私のコードです。開発にEclipseを使用しています

public class MyUI extends JFrame {

    JButton button1 = new JButton("Click");
    JTextField tb1 = new JTextField(5);
    JPanel panel1 = new JPanel();

    public MyUI() {
        super("Test");
        setVisible(true);
        this.setLayout(null);
        panel1.setLayout(null);
        panel1.setVisible(true);
        button1.setVisible(true);
        panel1.add(button1);
        add(panel1);
        panel1.setLocation(10, 10);
        button1.setLocation(10, 10);    
        setDefaultCloseOperation(EXIT_ON_CLOSE);    
        button1.addActionListener(this);
    }

    public static void main(String[] args) {
        MyUI gui = new MyUI();
        gui.setSize(400, 300);
    }
}
4

3 に答える 3

2

1. なぜJComponents同じものを 2 つ入れるのかBounds

panel1.setLocation(10, 10);
button1.setLocation(10, 10);  

2.イニシャルスレッドを見てください

3.public class MyUI extends JFrame {

する必要があります

public class MyUI extends JFrame implements ActionListener{ 

4.拡張JFrameせず、ローカル変数を作成する

5. (この形式では)コンストラクターsetVisible(true);への最後のコード行のみにする必要がありますMyUI()

6.setVisible(true);重要な問題です。表示JFrameしてから追加しJComponentます。

7.削除して 追加した場合に表示される可能性がある場合はNullLayout、使用しないでください。適切な使用してくださいLayoutManagerthis.setLayout(null);panel1.setLayout(null);JComponents

8. コンストラクターの最後の 2 つのコード行としてpack()beforeを使用setVisible(true)

編集 ( built_in LayoutManagersBorderLayoutfor JFrame、およびFlowLayoutfor を使用JPanel)

import java.awt.event.*;
import javax.swing.*;

public class MyUI extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JButton button1 = new JButton("Click");
    private JTextField tb1 = new JTextField(5);
    private JPanel panel1 = new JPanel();

    public MyUI() {
        super("Test");
        panel1.add(tb1);
        panel1.add(button1);
        add(panel1);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        button1.addActionListener(this);
        pack();
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                MyUI testing = new MyUI();
            }
        });
    }
}
于 2012-09-13T13:22:26.260 に答える
0

サイズがゼロであるため、パネルとボタンは表示されません。次のようなものを追加します。

panel1.setSize(100, 100);
button1.setSize(80, 30);

または、setBounds場所とサイズを同時に設定するのにより便利な方法を使用します。

panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);
于 2012-09-13T13:40:29.707 に答える
-1

あなたの質問に対する直接的な答えではありませんが、それでも私の観点からは重要なことを提案したいと思います....

Group Layout2005 年に NetBeans チームによって開発されたものを使用できます。これは素晴らしい作業です.... Windows Builder ProGoogle が無料で提供している を今すぐ試してみてください...アプリケーションをすぐに起動して実行することができます... ...

于 2012-09-13T17:59:41.113 に答える