※ ChatGPTを利用し、要約された質問です(原文:Swing自作コンポーネントをadd出来るように、)
Swing自作コンポーネントをadd出来るように
このQ&Aのポイント
Swing自作コンポーネントをadd出来るように、JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。
調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンスに線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンスに追加する方法はわからず、paintComponent()を使うやり方はできませんでした。
paintComponent()も使わずに、自分のできる方法で、組んだものを一応載せます。
Swing自作コンポーネントをadd出来るように、
JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。frame.add(自作のクラスのインスタンス)を可能にしたいです。
調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンス(?)に線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンス(?)に追加する方法はわからず、paintComponent()を使うやり方はできませんでした。
paintComponent()も使わずに、自分のできる方法で、組んだものを一応載せます。
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyComponentTest{
public static void main(String[] args){
JFrame frame = new JFrame("タイトル");
frame.setSize(400, 300);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
// 2つのテキストフィールドと一つのボタンを4つ追加する
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.setVisible(true);
}
}
//2つのテキストフィールドと一つのボタンを一つの部品にしたい
class TwoTextFieldsAndOneButton{
JTextField textField1 = new JTextField("テキストフィールド1");
JTextField textField2 = new JTextField("テキストフィールド2");
JButton button = new JButton("ボタン");
// こんなメソッドを使わずに、再現したい
JPanel getContent(){
JPanel panel = new JPanel();
panel.add(textField1);
panel.add(textField2);
panel.add(button);
return panel;
}
}
お礼
なるほどです! 継承の関係をうまく使えば、うまくできますね!ありがとうございました。