jframe actionperformed jframe - PullRequest
       14

jframe actionperformed jframe

1 голос
/ 13 марта 2012

В настоящее время у меня есть кнопка, которая при нажатии выполняет метод, который создает jframe с панелью, которая загружает несколько изображений.Если эту кнопку нажимать несколько раз, изображения продолжают добавляться в существующие изображения, загруженные в jframe.Какой код следует использовать, чтобы при нажатии кнопки после jframe и загрузке элементов после однократного нажатия больше ничего не добавлялось.

Большое спасибо

Ответы [ 5 ]

2 голосов
/ 13 марта 2012

А как же:

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);
}
0 голосов
/ 09 февраля 2017
boolean isAlreadyCreated = false;

yourButton.addActionListener(new ActionListener()
{
    if(!isAlreadyCreated)
    {
        //CREATE YOUR NEW FRAME
        isAlreadyCreated = true;
    }
});
0 голосов
/ 09 августа 2012

Я предлагаю логическое значение, которое является ложным при запуске программы, а затем при нажатии кнопки она проверяет, является ли логическое значение ложным. Если это ложь, то создайте материал, который вы хотите, а затем сделайте это правдой. Если это правда, ничего не делайте или предупредите пользователя, чтобы он не нажимал кнопку более одного раза, или что-то в этом роде

0 голосов
/ 14 марта 2012

Отключить кнопку при отображении кадра и при закрытии кадра включить кнопку.

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);
 }
0 голосов
/ 13 марта 2012
  1. не создает много JFrames во время выполнения, потому что эти объекты никогда не уходили от Used JVM Memory до текущего JVM экземпляра, существующего

  2. вы смотрите на CardLayout , что очень удобно для решения ваших проблем с несколькими взглядами (в данном случае в одном JFrame)

  3. положить изображения как Icon / ImageIcon в JLabel

...