【问题标题】:Why button does not reflect Action' NAME property?为什么按钮不反映 Action 的 NAME 属性?
【发布时间】:2012-03-24 08:43:11
【问题描述】:

我想按钮在下面的代码中应该有“关闭”标题,但它没有:

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");
    }
}

【问题讨论】:

    标签: java swing action modal-dialog jbutton


    【解决方案1】:

    使用Action.NAME 而不是"NAME"

    value of this constant 实际上是 "Name",因此您也可以使用它,但是您可以看到它很容易出错。

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 2012-12-11
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      相关资源
      最近更新 更多