在我的程序中,我有以下代码
panel.java
public class Panel extends JPanel {
private JTextField myText;
private JButton confirm;
public Panel(){
createComponents();
addComponents();
}
private void createComponents(){
myText = new JTextField(10);
confirm = new JButton("confirm");
confirm.addActionListner(new Controller(myText.getText()));
}
private void addComponents(){
add(mytext);
add(confirm);
}
}
我有 Controller
Controller.java
public class Controller implements ActionListner {
private String text;
public Controller(String text){
this.text = text;
}
@Override
public void ActionPerformed(ActionEvent e){
System.out.println(text);
}
}
问题是:当我将文本传输到 Controller 时,我收到一个空的String
。当我不使用 Controller 时,当我询问时我可以看到我的文本 confirm.addActionListner(new ActionListner()...);
我需要使用 Controller ,因为我需要以 MVC 模式进行编程。是否可以选择将我的文本传输到 Controller ?
提前致谢
最佳答案
正如我已经评论过的:不要将文本提供给您的 Action 监听器,只需在您的文本字段上给他一个引用,然后在您的 Action 监听器中调用 getText() 即可。
更改confirm.addActionListner(new Controller(myText.getText()));
到 confirm.addActionListner(new Controller(myText));
和
public class Controller implements ActionListner {
private String text;
public Controller(String text){
this.text = text;
}
@Override
public void ActionPerformed(ActionEvent e){
System.out.println(text);
}
}
到
public class Controller implements ActionListner {
private JTextField myTextField;
public Controller(JTextField myTextField){
this.myTextField = myTextField;
}
@Override
public void ActionPerformed(ActionEvent e){
System.out.println(myTextField.getText());
}
}
关于java - JTextfield 文本到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780935/