私はJavaとOOPS全般の初心者です。はじめに Head First Java を勉強し、その中で GUI と Swing の概念を勉強しています。以下のコードは、理解を目的としたものです。
コードを実行すると、フレームウィンドウにボタンが表示され、展開するとラジオボタンも表示されます。
問題-
- ボタンは、ウィンドウ サイズがボタン サイズ以下になるまで機能します。ウィンドウのサイズをボタンのサイズよりも少し大きくするとすぐに、カーソルがその上にあるときにのみボタンが表示されます。
マウスを使用してウィンドウのサイズを変更しています。
フレームサイズをボタン以上に設定しても。frame.setSize(800,800); と言います。ボタンはcontentPane全体をカバーします。サイズ変更でも同じように動作します。
また、contentPane のどこをクリックしても、ボタンはマウスのクリックに応答します。ボタンを直接クリックした場合にのみ応答するはずです。
なぜこのように振る舞うか教えてください。
可能であれば、コードの修正またはこれを修正するための追加。
import java.awt.Color;
import javax.swing.*;
import java.awt.event.*;
public class Test1 implements ActionListener {
JFrame frame = new JFrame("Frame");
JButton button = new JButton("Button!");
JRadioButton radio = new JRadioButton("VideoKilledTheRadioStar!",true);
int j=0;
public static void main(String[] args) {
Test1 t = new Test1();
t.method1();
}
public void method1()
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.setSize(100,100);
button.setBackground(Color.ORANGE);
frame.add(button);
frame.setSize(100,100);
frame.setVisible(true);
button.addActionListener(this);
frame.getContentPane().add(radio);
radio.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{j++;
button.setText("clicked .. " + j);
if(button.getBackground()==Color.ORANGE)
button.setBackground(Color.BLUE);
else
button.setBackground(Color.ORANGE);
}
}
PSコードのどのセグメントがこの質問に重要または関連性が高いかわからなかったため、完全なコードを掲載しました。