2015-08-16 3 views
0

Когда я запускаю свою основную часть класса ButtonSample, кнопка появляется и работает по назначению, но не может быть нажата более одного раза. Что заставляет это произойти, и что я должен изменить, чтобы сделать эту работу должным образом и нажать кнопку, которую можно нажать несколько раз. Это как-то связано с моим действующим лицом. Также, когда я пытаюсь нажать кнопку выхода, кнопка не закрывается до тех пор, пока я не перезапущу виртуальную машину Java, как бы я ее исправить тоже.Невозможно нажать JButton больше одного раза bluej

import java.io.*; 
import javax.swing.*; 
import java.awt.event.*; 
public class ButtonSample extends JFrame implements ActionListener 
{ 
    String[] et = {}; 
    JButton button1; 
    public ButtonSample() throws IOException 
    { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(100, 100); 
     setLocation(100, 100); 

     button1 = new JButton("GO"); 
     button1.addActionListener(this); 
     add(button1); 

     setVisible(true); 
    } 

    public static void main(String[] args) throws IOException 
    { 
     new ButtonSample(); 
    } 

    @Override 
    public final void actionPerformed(ActionEvent e) //throws IOException 
    { 
     try{ 
     String command = e.getActionCommand(); 
     String[] arr = {}; 

     if(command.equals("GO")) { 
     tester.main(arr); 

    } 
    }catch(IOException io){ } 
    } 
} 



public class tester 
{ 
    public static void main(String[] args) throws IOException 
    { 
     String[] err = {}; 
     try 
     { 
      boolean go = true; 
      Scanner in = new Scanner(System.in); 
      while(go) 
      { 
      Reader r = new Reader(); 
      Three t = new Three(); 
      String[] run = {}; 
      String[] list = Reader.main(run); 
      int one = t.get1(); 
      int two = t.get2(); 
      int three = t.get3(); 
      t.check(one, two, three); 
      System.out.println("The three names are..."); 
      System.out.println(list[one] + " " + list[two] + " " +  list[three]); 
      System.out.print("Play again?(Y/N): "); 
      String check = in.next(); 
      if(check.equals("n") || check.equals("N")) 
      { 
       go = false; 
       System.exit(0); 
      } 
      System.out.print('\u000C'); 
      } 
     } catch (StackOverflowError e) 
      { 
       System.out.print('\u000C'); 
       tester.main(err); 
      } 
    } 
} 
+0

'catch (IOException io) {}' ??? –

+0

Мне нужно выбросить IOException внутри другого класса, поэтому я добавил его там, потому что я мог думать о любом другом способе, чтобы заставить класс actionPerformed его бросить. – vlovero

+1

@vlovero ok, но пустой блок блокировки не является хорошим –

ответ

0

Проблема в tester.main(arr);. Я попробовал запустить код без него, и кнопка работает нормально.

public final void actionPerformed(ActionEvent e) //throws IOException 
{ 
     String command = e.getActionCommand(); 
     String[] arr = {}; 

     if(command.equals("GO")) { 
     // tester.main(arr); 
      System.out.println("Test"); 
     } 
} 

Просьба предоставить нам код для tester.main.

+0

Нужны ли вам остальные классы или достаточно тестер? – vlovero

+0

@vlovero. ОК. Приятно слышать, что вы нашли основную проблему и решили ее. –

+1

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – Tordek

Смежные вопросы