2014-04-23 626 views
0

代碼在ide文本字段中不輸出「Works」消息。我怎樣才能讓程序在ide的文本中輸出我的信息?謝謝。在動作偵聽器偵聽事件後,Java gui不打印

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class test extends JFrame { 

    private JButton button1; 

    public test() { 
     JFrame frame = new JFrame("Test Program"); 
     JPanel panel = new JPanel(); 
     JButton button1 = new JButton("Click me PLEASE!"); 
     panel.setBackground(Color.red); 
     panel.add(button1); 
     frame.getContentPane().add(panel); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     frame.setSize(800, 800); 
     Listener1 listen = new Listener1(); 
     button1.addActionListener(listen); 

    } 

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

    private class Listener1 implements ActionListener { 

     public void actionPerformed(ActionEvent event) { 
      if (event.getSource() == button1) { 
       System.out.println("Works!"); 
      } 
     } 
    } 

回答

1

button1你與比較實例不是button1觸發事件實例...

基本上,你在你的陰影...變量

// Declare instance variable here... 
private JButton button1; 

public test() { 
    //... 
    // Redeclared as local variable here 
    JButton button1 = new JButton("Click me PLEASE!"); 

如果你添加...

System.out.println("button1 = " + button1); 

給你Listener1,你會發現這是null

取消本地聲明...

button1 = new JButton("Click me PLEASE!"); 
+0

如果我刪除了本地聲明,我不能在test()方法使用Button1的。我相信肯定會有別的錯誤。 – user3562855

+0

刪除本地聲明後我得到了這個: – user3562855

+0

@ user3562855:我建議你聽瘋狂的recs,並按照他們正確的方式。 –