在區域變數建立 JTextField text = new JTextField(); 加入 JPanel 後,後續方法無法存取。解決方式:
public class MyPanel extends JPanel {
private JTextField textField; // 成員變數
public MyPanel() {
textField = new JTextField(20);
add(textField);
}
public String getText() { return textField.getText(); }
}
public class MyFrame extends JFrame {
private JTextField field;
public MyFrame() {
field = new JTextField();
add(field);
// 若需在其他類別存取,提供 getter
}
public JTextField getField() { return field; }
}
getText() 而非直接暴露 JTextField,降低耦合。NullPointerException。養成「宣告在類別頂層、建構子實例化、對外暴露行為而非元件」的習慣,即可輕鬆管理 Swing 元件。