dポイントプレゼントキャンペーン実施中!

よろしくお願いします。
javaを使った文字入力プログラムを作っているのですが、どうしても分からず質問させて頂きたいと思います。

「あ」から「ほ」までの合計30個のひらがなの文字が書かれたボタンを、5つ×6行で設置し、クリックするとそのボタンの文字がテキストボックスに入力される・・・という設計にしたいです。

もちろん1つずつソースを書けばできるのですがそれではコードが冗長になってしまうので、できるだけ簡略化してループ処理などで実現できればと考えています。


設置するボタンはひらがなボタン30個に加え、テキストボックスをリセットするボタン、クリックするとダイアログメッセージを表示させるボタンの計32個です。

時分でもいろいろ調べてみたのですが分からずじまいです。
どうかよろしくお願いいたします!

A 回答 (1件)

ボタンを30個作って、ボタンを押すと、そのボタンの


名前をコンソールに表示するサンプルソースです。


public class button30 extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;

JButton [] bt;

public button30() {


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GroupLayout layout = new GroupLayout(this.getContentPane());

this.getContentPane().setLayout(layout);

this.setSize(new Dimension(500, 500));

bt = new JButton[30];

for(int i=0;i<30;++i){
bt[i]=new JButton("button"+i);
bt[i].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

btnfunction(e);
// TODO 自動生成されたメソッド・スタブ

}
});
}

GroupLayout.SequentialGroup vgs = layout.createSequentialGroup();

for(int y=0;y<5;++y){
GroupLayout.ParallelGroup gpg = layout.createParallelGroup(Alignment.BASELINE);
for(int x=0;x<6;++x){
gpg.addComponent(bt[x*5+y]);
}
vgs.addGroup(gpg);
}

GroupLayout.SequentialGroup hg =layout.createSequentialGroup();



for(int y=0;y<6;++y){
GroupLayout.ParallelGroup phg = layout.createParallelGroup();
for(int x=0;x<5;++x){
phg.addComponent(bt[x+y*5]);
}
hg.addGroup(phg);
}

layout.setVerticalGroup(vgs);
layout.setHorizontalGroup(hg);

this.setVisible(true);



// TODO 自動生成されたコンストラクター・スタブ




}

protected void btnfunction(ActionEvent e) {

JButton b = (JButton) e.getSource();
System.out.println(b.getText());
// TODO 自動生成されたメソッド・スタブ

}

public static void main(String[] args) {

new button30();

}

}
「複数のボタンを配置し、それぞれにイベント」の回答画像1
    • good
    • 0

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