0

わかりました、ここに私の問題があります。クラス B は、textField とボタンを持つ GUI を構築するクラスです。クラスAにはクラスBのインスタンスがあります。テキストフィールドに値を入力し、ボタンをクリックすると、クラスAIでテキストフィールドに入力した値を印刷したいのですが、どうすればそれを達成できますか?

以下のコードは、私が達成したいことをよりよく説明しているかもしれません:

    public class A
    {
        B myB = new B();

        (when the JButton was clicked, 
         how can I get the new textfield value here?)
    }

    public class B
    {
        JLabel myLabel;
        JButton myButton;

        public B()
        {
            getContentPane().setLayout(null);
            myLabel = new JLabel();
            myLabel.setLocation(0,0);
            myLabel.setSize(100,30);
            myLabel.setBackground( new Color(-6710887) );
            myLabel.setText("");
            getContentPane().add(myLabel);

            myButton = new JButton();
            myButton.setLocation(0,50);
            myButton.setSize(100,30);
            myButton.setBackground( new Color(-16737895) );
            myButton.setText("Submit");
            getContentPane().add(myButton);

            myButton.addActionListener(this);

            setSize(400,400);
            setVisible(true);
            setResizable(false);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        public void actionPerformed(ActionEvent e)
        { 

              (how can I pass this "myLabel.getText()" value to class A when 
              this action performed?)
        }
    }

この小さなプログラムを完成させるのを手伝ってくれる人はいますか? 前もって感謝します!

4

2 に答える 2

0

私はよく、GUI ビルダーで作成したすべてのコンポーネントを結び付ける「App」クラスを作成します。どんな価値のある GUI ビルダーでも、生成されたソース コードにゲッターを追加できます。GUI で構築されたコンポーネントにいくつかのゲッターを追加して、GUI の主要な要素を取得し、必要に応じて App クラスがゲッターを使用してコンポーネントとやり取りできるようにします。これは MVC/MVVM/MVP の設計賞を受賞することはありませんが、仕事は成し遂げられます。

public class App {
    private B _b;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                App app = new App();
                app.run();
            }
        });
    }

    void run() {
        _b = new B();
        _b.getMainButton().addActionListener(new MainButtonListener());
        _b.setVisible(true);
    }

    private void handleMainButtonClicked() {
        String mainText = _b.getMainTextArea().getText();
        System.out.println("Button clicked; main text = " + mainText);
    }

    public class MainButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            handleMainButtonClicked();
        }
    }
}

public class B extends JFrame {
    private JPanel _contentPane;
    private JTextArea _jTextArea;
    private JButton _jButton;

    public B() {
        initComponents();
    }

    private void initComponents() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);
        _contentPane = new JPanel();
        setContentPane(_contentPane);

        _jTextArea = new JTextArea();
        _contentPane.add(_jTextArea, BorderLayout.CENTER);

        _jButton = new JButton("My Button");
        _contentPane.add(_jButton, BorderLayout.SOUTH);
    }

    public JButton getMainButton() {
        return _jButton;
    }

    public JTextComponent getMainTextArea() {
        return _jTextArea;
    }
}
于 2013-10-25T17:48:25.060 に答える