2016-09-06 30 views
0

我正在写一个基本的程序来模拟用户和计算机之间的对话。我正在尝试使用setter和getter来更改另一个类中的textField中的文本。点击该按钮,textField中不显示任何内容。这里是我的代码:一个基本的逻辑问题,同时使用setter和getter与Swing

public class DialogueWindow extends JFrame { 

    SuperDialogue SD = new SuperDialogue(); 
    JTextField textField = new JTextField(); 
    JButton Answer1 = new JButton(); 

    public DialogueWindow() { 
     initUI(); 
    } 

    public void initUI() { 

     JPanel panel = new JPanel(); 
     getContentPane().add(panel); 
     panel.setLayout(null); 

     JButton Answer1 = new JButton(); 
     Answer1.setBounds(102, 149, 113, 30); 

     Answer1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 

       textField.setText(SD.getReply1()); 
      } 
     }); 

     panel.add(Answer1); 

     textField = new JTextField(); 
     textField.setBounds(56, 74, 174, 45); 
     panel.add(textField); 

     setTitle("Dialogue"); 
     setSize(800, 600); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE);  
    } 
} 

public class SuperDialogue { 

    private String answer; 

    public String getReply1(){ 
     return this.answer;   
    } 

    public void setReply1(String a1){ 

    this.answer = a1;  
    } 
} 
public class Conversation1 extends SuperDialogue { 

public void Convo(){ 
    String firstLine = "hello"; 
    setReply1(firstLine); 
    DialogueWindow DW = new DialogueWindow(); 
    DW.setVisible(true); 
    DW.setSize(300,300); 
    } 
} 

public class Main { 

public static void main(String[] args) { 

    Conversation1 c1 = new Conversation1(); 
    c1.Convo(); 
    } 
} 

回答

2

的SuperDialogue在JFrame类是不一样在你的主创建的。

SuperDialogue SD = new SuperDialogue(); 

此行创建单独的SuperDialog,它不具有相同的值。这个从不设置,所以getReply1()不返回任何内容。

+0

啊是的,这是总的意义。谢谢 :) – noobAlert