2013-10-31 61 views
0

//新的Java swing,需要幫助獲取第一個Jtextfield中的文本以顯示在//第二個jtextfield中?我年輕,剛開始在Java中,需要一些幫助。下面是我已經做的代碼已經感謝將值從一個JtextField傳遞到另一個JtextField?

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class lab4 extends JFrame implements ActionListener { 

    int numClicks = 0; 
    String text = null; 

    public lab4() { 
     setSize(1200, 700); 
     setVisible(true); 
     JButton button = new JButton("Hello i am a button"); 
     button.addActionListener(this); 
     JPanel panel = new JPanel(); 
     panel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); 

     panel.add(button); 
     this.add(panel); 

     JMenuBar menubar = new JMenuBar(); 
     this.setJMenuBar(menubar); 
     JMenu file = new JMenu("File"); 
     menubar.add(file); 
     JMenuItem open = new JMenuItem("Open File"); 
     file.add(open); 

     final JTextField myField = new JTextField(10); 
     myField.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String text = myField.getText(); 
//System.out.println("Hello"); 

      } 
     }); 

     final JTextField myField2 = new JTextField(10); 
     yField2.setText(myField.getText()); 
     panel.add(myField); 

     panel.add(myField2); 
     setVisible(true); 
    } 
} 

    public static void main(String[] args) { 
     new lab4(); 

    } 

    public void actionPerformed(ActionEvent e) { 
     numClicks++; 
     System.out.println("The button has been clicked " + numClicks + " times"); 

    } 
} 
+0

正如一個側面說明,你的'main'和'actionPerformed'方法在主類體外聲明,並且你有一個額外的'}',這意味着你的代碼甚至不會編譯... – MadProgrammer

回答

3

是的,你做得很好。如果在一個動作事件中多於一個工作順序發生,則需要將該順序放入相應的actionPerformed函數中。因此:

myField.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
    String text = myField.getText(); 
    myField2.setText(text); 

} 
}); 

JComponents偵聽器意味着它們只會在發生操作事件時偵聽和響應。他們將通過ActionListener事件通知事件來源(JCompnent)與addActionListener()函數通知您。

還有一件需要注意的事情:甚至在聲明它之前,您都無法訪問任何語句中的字段。編譯器在做任何事情之前需要知道該領域的信息。所以你必須在它的訪問代碼之前聲明myField2,比如myField1anonymous classActionListeneractionPerformed函數。

教程資源:

  1. Writing Event Listeners
  2. Anonymous Class
1

可以共享模型:

JTextField textField1 = new JTextField(...); 
JTextField textField2 = new JTextField(...); 
textField2.setDocument(textField1.getDocument()): 

現在,只要你鍵入任何文本字段中的其他文本將al所以要更新。

+0

祝賀'100k';) – Sage

+0

謝謝,它只帶我1151天......並計數;) – camickr

+0

@camickr +++ 100k – mKorbel

相關問題