アプリ版:「スタンプのみでお礼する」機能のリリースについて

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;
}
}

「Swing自作コンポーネントをadd出来」の質問画像

A 回答 (1件)

全角空白でインデントしております。

コピペ後タブ等に置換してください。


class TwoTextFieldsAndOneButton extends JPanel {
 JTextField textField1 = new JTextField("テキストフィールド1");
 JTextField textField2 = new JTextField("テキストフィールド2");
 JButton button = new JButton("ボタン");

 TwoTextFieldsAndOneButton(){
  super();

  add(textField1);
  add(textField2);
  add(button);
 }

 // 以下、各コンポーネントのプロパティへのアクセスや操作を行うコードを記述する
}
    • good
    • 0
この回答へのお礼

なるほどです!

継承の関係をうまく使えば、うまくできますね!ありがとうございました。

お礼日時:2014/01/06 19:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!