jframe actionperformed jframe

时间:2012-03-13 18:44:58

标签: java image swing jframe jbutton

我目前有一个按钮,当点击它时,会执行一个方法来创建一个带有加载多个图像的面板的jframe。如果多次单击此按钮,图像将继续添加到加载到jframe上的现有图像上。我应该使用什么代码,以便在加载jframe和元素后单击按钮,单击一次后,将不会添加任何其他代码。

非常感谢

5 个答案:

答案 0 :(得分:2)

怎么样:

public void actionPerformed(ActionEvent evt) {
  button.setEnabled(false);

  // the other code that creates imgFrame

  imgFrame.addWindowListener(new WindowAdapter() {
      @Override public void windowClosing(WindowEvent evt) {
          button.setEnabled(true);
      }});

  imgFrame.setVisible(true);
}

答案 1 :(得分:0)

  1. 不要在运行时创建大量JFrames,因为这些对象永远不会从Used JVM Memory出现,直到当前存在JVM实例

  2. 您已经CardLayout非常轻松地查看多个视图的问题(在这种情况下只有一个JFrame

  3. 将图片Icon/ImageIcon添加到JLabel

答案 2 :(得分:0)

在框架显示时禁用按钮,当框架关闭时,启用按钮。

public void actionPerformed(ActionEvent evt) {

    final JButton finalButton = button;
    button.setEnabled(false);
    JFrame frame = new JFrame()
    {
        protected void processWindowEvent(WindowEvent e)
        {
            if (e.getID() == WindowEvent.WINDOW_CLOSING)
            {
                finalButton.setEnabled(true);
            }
            super.processWindowEvent(e);
        }
    };
    frame.setVisible(true);
 }

答案 3 :(得分:0)

我建议程序启动时布尔值为false,然后单击该按钮时,它会测试布尔值是否为false。如果它是假的,那么创建你想要的东西,然后将其设置为true。如果是真的,什么也不做,或提醒用户不要再点击那个按钮,或者那件事

答案 4 :(得分:0)

var app = angular.module('app', []);
# app.service(/**your injections*/) etc
# to access to the list of services + injections
app._invokeQueue #has following form: 
[
    [
        '$provide',
        'service',
        Arguments[
            'serviceName', 
            [
                '$dependency1', 
                '$dependency2', 
                function(){}
            ],
        ]
    ]
]