Java JTextfield将文本发送到控制器
在我的程序中,我有以下代码Java JTextfield将文本发送到控制器,java,model-view-controller,Java,Model View Controller,在我的程序中,我有以下代码 panel.java public class Panel extends JPanel { private JTextField myText; private JButton confirm; public Panel(){ createComponents(); addComponents(); } private void createComponents(){ my
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);
}
}
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.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);
}
}
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);
}
}
问题是:当我将文本传输到控制器时,我收到一个空的字符串。当我不使用控制器时,我可以在询问时看到我的文本confirm.addActionListner(newActionListner()…)代码>
我需要使用控制器,因为我需要在MVC模式下编程。是否有将我的文本传输到控制器的选项
提前谢谢
private void createComponents(){
myText = new JTextField(10);
confirm = new JButton("confirm");
confirm.addActionListner(new Controller(myText.getText())); // when you create this there is no text in myText TextField
}
另外,java swing JTextField不是可绑定组件。正如我已经说过的:与其将文本提供给actionlistener,不如在textfield上给他一个引用,并在actionlistener中调用getText()
更改confirm.addActionListner(新控制器(myText.getText())代码>
确认.addActionListner(新控制器(myText))代码>
及
到
这是因为您将字符串传递给构造函数。执行此操作时,文本为空,因为在添加ActionListener时myText对象具有空文本。相反,您应该传入myText组件,以便在设置action listener时,它可以从该组件中获取新值。您实际上不是在用字符串填充myText。与其将文本提供给actionlistener,不如在您的textfield上给他一个引用,然后在actionlistener中调用getText(),您还应该正确命名变量。像myText->myTextField和confirm->confirmButton这样的东西会更容易阅读,在这种情况下,您不再需要字符串文本变量了。这是真的,ty。我把它拿走了。