編集:すべての回答をありがとう、本当に多くの素晴らしいヒントを助けてくれました。
こんにちは、私はここにいるのは初めてで、Java プログラミングも初めてなので、できる限り関連情報を提供しようと思います。
私の問題は、2 つのクラスを作成しようとしていることです。最初のクラス (ClassA) は GUI で、2 番目 (ClassB) は (ClassA) のロジックです。
私のコードの簡単な例は次のとおりです。
クラスA
import javax.swing.*;
import java.awt.*;
public class ClassA extends JFrame {
JTextField a = new JTextField();
JButton but = new JButton("Click");
ClassB cb = new ClassB();
public ClassA() {
setTitle("Test");
setLookAndFeel();
setSize(250, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout mainGrid = new GridLayout(1, 1, 20, 20);
setLayout(mainGrid);
add(a);
add(but);
but.addActionListener(cb);
setVisible(true);
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
//ignore error
}
}
public static void main(String[] args) {
ClassA Alch = new ClassA();
}
}
クラスB
import java.awt.event.*;
public class ClassB implements ActionListener{
String command;
String text;
ClassA ca;
@Override
public void actionPerformed(ActionEvent event) {
command = event.getActionCommand();
if (command.equals("Click")) {
text = ca.a.getText();
System.out.println(text);
}
}
}
私が抱えている問題は、 ClassB を取得して JTextField aを読み取ることです。
行を削除すると
text = ca.a.getText();
と使用
System.out.println(command);
クリックを出力するので、残りのコードは機能しているように見えますが、追加するとすぐに
text = ca.a.getText();
「クリック」ボタンを使用すると NullPointerException が発生します。
そこで問題は、ClassB に JTextField を読み取らせて出力させるコードをどのように記述すればよいかということです。