ハングマンゲームを作成しています。 NetbeansのGUIツールバーを使ってボタンA〜Zを作成しました。 Javaハングマンプロジェクト:アクションリスナー
私の問題は、どのように私はそれにすべてのアクションリスナーを追加できます。ループを使用することは可能ですか?私がボタンAをクリックすると、文字「a」などが得られます。
ハングマンゲームを作成しています。 NetbeansのGUIツールバーを使ってボタンA〜Zを作成しました。 Javaハングマンプロジェクト:アクションリスナー
私の問題は、どのように私はそれにすべてのアクションリスナーを追加できます。ループを使用することは可能ですか?私がボタンAをクリックすると、文字「a」などが得られます。
はい、ループを使用することが可能であるが、あなたのJButtonががNetBeansのにコード生成を使用して作成されたので、彼らが」勝ちました最初は配列やコレクションに入れておく必要があります。つまり、JButtonの配列を作成し、NetBeansで作成されたボタンでその配列を埋めてください。次に、forループを作成し、そのループ内にActionEventのactionCommand(上記のように)をロジックで使用するActionListenerを追加します。
このように言えば、NetBeanのGUIビルダー(Matisse)の使用を控えて、代わりに手でスイングコードを作成する方がよいと思います。これにより、コードの管理を大幅に強化し、コードの理解を深めることができます。たとえば、このようにすると、forループでボタンを作成し、リスナを追加し、ボタンをコンテナ(JPanel)に追加することができます。あなたがそれらを反復処理できるよう
例えば、
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
public class Foo2 {
public static void main(String[] args) {
JPanel buttonContainer = new JPanel(new GridLayout(3, 9, 10, 10));
List<JButton> letterButtons = new ArrayList<JButton>(); // *** may not even be necessary
for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++) {
String buttonText = String.valueOf(buttonChar);
JButton letterButton = new JButton(buttonText);
letterButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
System.out.println("actionCommand is: " + actionCommand);
// TODO fill in with your code
}
});
buttonContainer.add(letterButton);
letterButtons.add(letterButton);
}
JOptionPane.showMessageDialog(null, buttonContainer);
}
}
まあ、いくつかの擬似コードでは、これはあなたにとって意味がありませんか?
for(button in bord) {
button.addActionListener(my_actionlistener);
}
次に、あなたのActionListenerにボタンが押されたかを確認することができます
public void actionPerformed(ActionEvent e) {
// button pressed
if ("string".equals(e.getActionCommand()) {
// do something
}
// and so forth
}
あなたはいくつかの種類のリストにボタンを追加する必要がありますあなたは、ボタンを生成する際、Netbeansのはあなたのためにこれを行いません。
その後、すべてのボタンを含むリストの各ループに対してaを実行します。あなただけ
int charNum = 97;
for(Button b : board) {
char charVal = (char)charNum;
charNum++;
//add the action listener
}
+1が、アクションはすべてのボタンでも同じですので、:文字の値は、ちょうど下ケースaまたは大文字のAのための65のために97から始まるrelevant ascii valueを、キャストを取得するには単一のActionListenerを作成する必要があります。リスナーはループ外で作成し、ループ内のボタンに追加する必要があります。 – camickr