2012-03-24 34 views
2

我想按钮应该有“关闭”的称号在下面的代码,但它不是:为什么按钮不反映Action的'NAME'属性?

public class Test_Actions extends JDialog 
{ 
    private AbstractAction closeAction = new AbstractAction() 
    {  
     { 
      putValue("NAME", "Close"); 
     } 

     @Override 
     public void actionPerformed(ActionEvent arg0) 
     { 
      Test_Actions.this.setVisible(false); 
      Test_Actions.this.dispatchEvent(new WindowEvent(Test_Actions.this, WindowEvent.WINDOW_CLOSING)); 
     }  
    }; 

    public Test_Actions() 
    {  
     JLabel label = new JLabel("Hello world"); 

     JButton button = new JButton(closeAction); 
     //button.setText("Text"); 

     setLayout(new BorderLayout()); 
     add(label, BorderLayout.CENTER); 
     add(button, BorderLayout.SOUTH); 

     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 

    } 

    public static void main(String[] args) throws InterruptedException, InvocationTargetException 
    { 
     final Test_Actions dialog = new Test_Actions(); 
     dialog.setModal(true); 

     SwingUtilities.invokeAndWait(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       dialog.pack(); 
       dialog.setVisible(true); 
      }  
     }); 

     System.out.println("Here"); 
    } 
} 
+0

好问题+1 – mKorbel 2012-03-24 09:06:40

回答

8

使用Action.NAME,而不是"NAME"

value of this constant实际上是"Name"所以你可以使用它,但正如你所看到的,很容易弄错它。

+0

啊我是个傻瓜! :) – Dims 2012-03-24 11:52:23

相关问题