3

だから私はこの問題を抱えています。このコードはJavaEclipseSDK4.2.1で記述しました。ここではすべてを記述していません。actionPerformedメソッドは現在は無関係であり、Mainから一度呼び出されます。問題は、実行すると、コンポーネントの1つがウィンドウ全体を埋め尽くし、他のすべてのコンポーネントとオーバーラップすることです。サイズを乱数で変更してみました。たとえば、400から350に変更しましたが、うまくいくことがありましたが、再び壊れました。私はおそらく何かが足りない、私はただ何がわからない。他のフォーラムを検索しましたが、何も見つかりませんでした。

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collections;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;


public class Window extends JFrame implements ActionListener
{
    JTextField field1;
    JTextField field2;

    public Window()
    {
        super("Main Window");
        setVisible(true);
        setSize(500, 500);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Initialize();
    }
    private void Initialize()
    {
        field1 = new JTextField();
        field2 = new JTextField();
        field1.setBounds(0, 0, 400, 100);
        field2.setBounds(0,100,400,100);
        add(field1);
        add(field2);
        field1.setBackground(Color.PINK);
        field1.setForeground(Color.RED);
        field2.setBackground(Color.PINK);
        field2.setForeground(Color.RED);
        JButton button = new JButton("Create");
        button.setBounds(0, 200, 400, 100);
        add(button);
        button.setBackground(Color.BLACK);
        button.setForeground(Color.YELLOW);
        button.addActionListener(this);

    }
4

1 に答える 1

4

問題は、実際にはそうではないのに、使用されているレイアウトがnullであるかのようにコンポーネントを追加しようとしているため、コードが使用されているレイアウトマネージャーを尊重しないことです。解決策は、レイアウトマネージャーを読んで学び、それらを使用することです。これには、の呼び出しの回避が含まれsetBounds(...)ます。JFrameのcontentPaneはデフォルトでBorderLayoutを使用することに注意してください。この情報は、始めるのに役立ちます。また、間違った解決策はnullレイアウトを使用することであることに注意してください。ですから、誰かがこれを提案した場合、私はあなたにそれらを無視することを勧めます。

于 2013-03-09T16:58:54.073 に答える