2

Window Builderを使用して、Javaで最初のGUIクラスをプログラムしようとしています。わかりました。GUIは準備ができていますが、まだ機能がありません(10個のチェックボックス(はい、すべて必要です)と2個のボタンとJTextFieldが含まれているため、特別なことは何もありません)。だから私はチェックボックスとボタンをウィンドウにドラッグアンドドロップしただけで、まだ何もコーディングしていません。

私は2つのクラスを持っています:GUI.java->レイアウト用のみMain.java->GUI.javaから「入力」を取得する必要があります

ここで、ユーザーはチェックボックスをオンまたはオフにして、最後にボタンを押す必要があります。

しかし、チェックボックスがチェックされているかどうかにかかわらず、どうすれば「読み上げる」ことができますか?2つのクラスがありますか?

私はJava、特にGUIプログラミングの初心者であることを付け加えなければなりませんが、それを学びたいだけです。助けをいただければ幸いですが、完全なコードではありません。

4

6 に答える 6

3

基本的に、Main.javaからGUIのオブジェクトをインスタンス化します。次に、このGUIにアクセスできます(setter / getter-methodsがあるか、GUIのコンポーネントがパブリックであると想定しています)。GUIコンストラクターでは、すべてのビルダーメソッドを呼び出すため、new GUI()Main.javaから呼び出すと、a)GUIが実行され、b)Main.javaからGUIにアクセスできます。

チェックボックスに関する具体的な質問については、

nameOfCheckbox.isSelected()

チェックボックスがオンになっているかどうかに関係なく、ブール値を返します。

逆もまた同様です。Main.javaには静的メソッド(mainメソッドなど)がある(またはあるはずです)ので、GUI.javaMain.anyMethodName()から呼び出して(これはanyMethodであると仮定してstatic)、「ビジュアルエリア」から「」にデータを渡すことができます。ロジックエリア」(この2つのコンポーネントを可能な限り分離することをお勧めします)。

于 2012-06-19T16:05:13.793 に答える
1

完全なコードは必要ないとおっしゃっていましたが、これは実際にはそうではなく、やりたいことの非常に基本的な動作デモにすぎません。

ここに画像の説明を入力してください

Gui.java

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Gui {
JFrame frame;
JButton button;
JCheckBox checkBox;
JLabel label;

public Gui() {
    frame = new JFrame("demo");
    button = new JButton("is it checked?");
    checkBox = new JCheckBox();
    label = new JLabel("no");
    JPanel panel = new JPanel();
    panel.add(checkBox);
    panel.add(button);
    panel.add(label);
    frame.add(panel);
    frame.pack();
    //frame.setSize(200, 60);
    frame.setResizable(false);
    frame.setLocation(400, 400);
    frame.setVisible(true);
}

// method to add an action listener to the gui's
// private button
public void setButtonActionListener(ActionListener al) {
    button.addActionListener(al);
}

// gui method to check if box is checked
public boolean isBoxChecked() {
    return checkBox.isSelected();
}

// method to set lable
public void setText(String text) {
    label.setText(text);
}

}

Main.java

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Main {

public static void main(String[] args) {

    // create an instance of your gui class
    final Gui gui = new Gui();

    // add the action listener to the button
            // notice how we reference the gui here by running the methods in the
            // gui class
            // this action listener could be created in the gui
            // class but in general you don't want to do that because actions will 
            // involve multiple classes
    gui.setButtonActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            gui.setText((gui.isBoxChecked() ? "yes" : "no"));
        }
    });
}

}

于 2012-06-19T16:11:45.253 に答える
0

を添付しItemListenerます。

次の行で、ボックスが上昇している(チェックされていないからチェックされている)か下降している(チェックされているからチェックされていない)かを判断できます。itemStateChanged(ItemEvent e)

boolean selected = e.getStateChange() == ItemEvent.SELECTED;

変更されていないときにチェックされるかどうかを判断するには、次を使用します。isSelected()

于 2012-06-19T16:06:09.323 に答える
0

そのように:

checkbox.isSelected();

または、これは、変更があった場合に呼び出されるItemlistenerによる方法です。

checkbox.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.DESELECTED) {
                foo = false;

            } else {
                foo = true;
            }
        }
    });
于 2012-06-19T16:06:14.753 に答える
0

すべてのGUIオブジェクトをGUIクラスのフィールドとして公開できます

public JTextField getNameTextField() {
    return nameTextField;
}

public JCheckBox getCheckBox1() {
    return checkBox1;
}

そしてメインで:

if (gui.getCheckBox1().isSelected())
    // do stuff
于 2012-06-19T16:07:07.763 に答える
0

チェックボックスが「myCheckBox」という名前のオブジェクトであるとすると、次を使用して、チェックボックスが選択されているかどうかを確認できます。

myCheckBox.isSelected()

チェックボックスが選択されている場合はtrueを返します。

さまざまなGUIコンポーネントの使用方法に関するJavaのチュートリアルを確認することをお勧めします。例: http ://docs.oracle.com/javase/tutorial/uiswing/components/button.html

于 2012-06-19T16:10:07.127 に答える