2010-11-13 4 views
2

я написать метод, чтобы создать форму, затем некоторые другие команды, после того, что в основном. (Java)Хотя форма работает, другие команды выполняются

package pak2; 
import javax.swing.*; 

public class form6 { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

      JFrame jframe = new JFrame(); 

      JButton jButton = new JButton("JButton"); 

      jframe.getContentPane().add(jButton); 

      jframe.pack(); 
      jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      jframe.setVisible(true); 

      System.out.println("test***ok");//testtttttttttttttt 


    } 
} 

я хочу, чтобы выполнить «System.out. Println ("тест *** оК");» после этого форма закрыта. , но когда я запускаю программу, перед тем, как вводить информацию в форме, другие команды, которые выполняются! Пока форма запущена, выполняются другие команды! как я могу его установить.

+2

какой форма6() способ делаю? – Bogdan

ответ

0

В вашей функции code() функция вызова (call), а form6() - вызываемая функция. После вызова функции form6() из функции main() возвращается функция main(). Помните, что после вызова вызываемой функции управление всегда возвращается обратно к вызывающей функции.

+0

... если исключение не выбрасывается и не попадает. –

+0

"управление всегда возвращается к вызывающей функции после выполнения функции вызова." как я могу установить его в «управление возвращается к вызывающей функции после того, как вызываемая функция полностью вернет свои значения». –

+0

Я не понял, что именно вы просите. Точнее. – Swapna

0

Я не уверен, какова реализация вашей формы, но вам понадобится блокировка ввода, если вы не хотите, чтобы ее последующий код выполнялся сразу после этого, возможно, с помощью сканера?

+0

Что значит ??? «вам нужно будет заблокировать вход»? сканер? –

1

Вы ошибетесь по этому поводу.

Вот пример с комментариями:

public class Form2 { 

    public static void main(String[] args) { 

     final JFrame jframe = new JFrame(); 

     final JButton jButton = new JButton("JButton"); 

     /** 
     * Once you create a JFrame, the frame will "listen" for events. 
     * If you want to do something when the user clicks a button for example 
     * you need to add an action listener (an object that implements ActionListener) 
     * 
     * One way of doing this is by using an anonymous inner class: 
     */ 
     jButton.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (e.getSource().equals(jButton)){ 
        jframe.dispose(); 
        System.out.println("Button clicked!"); 
       } 

      } 
     }); 

     jframe.getContentPane().add(jButton); 
     jframe.pack(); 
     jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     // displaying the form will NOT block execution 
     jframe.setVisible(true); 
     System.out.println("test***ok");// testtttttttttttttt 
    } 
} 
+0

тест *** ok Кнопка нажата! –

+0

выход: тест *** ok Кнопка нажата! Сначала я хочу щелкнуть по кнопке, затем в сообщении появится с первой кнопкой «Clicked!». затем «тест *** ok» ?? !!! –

+0

Возможно, вам стоит сначала получить хорошую java-книгу или просмотреть учебники по Java - http://download.oracle.com/javase/tutorial/ и сначала изучить некоторые основные вещи ООП. – Bogdan

1

Есть две важные вещи, которые вы должны знать о Свинг и рамки, прежде чем продолжить:

  1. Построение компонентов и вызова методов на компоненты должны всегда выполняться в потоке отправки событий (EDT). This article объясняет принцип однопоточного правила в Swing. Обратите внимание, что это правило также относится к основному потоку. Используйте SwingUtilities.invokeLater и SwingUtilities.invokeAndWait, чтобы сделать это правильно.
  2. JFrame s - независимые элементы. Создание видимого объекта не будет блокировать вызывающий поток. Однако, если это то, что вы хотите сделать, используйте JDialog. Диалоги предназначены для блокировки и ожидания ввода пользователя, а , если вы создадите модальный диалог, сделав его видимым, заблокирует вызывающий поток (и если вы установите родителя Frame или Dialog, то вы можете заставить его оставаться на вершине тоже) , Хорошим примером этого является JOptionPane (дайте ему попробовать!) Кроме того, и тот факт, что JDialog, распространяющийся на Dialog вместо Frame, почти идентичен, и вы можете добавить любые элементы, которые вы хотите в базовое диалоговое окно.

Некоторые примеры кода:

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      // The boolean parameter 'modal' makes this dialog block. 
      JDialog d = new JDialog((Frame) null, true); 
      d.add(new JLabel("This is my test dialog.")); 
      d.setLocationRelativeTo(null); 
      d.pack(); 

      System.out.println("Dialog is opening..."); 
      d.setVisible(true); 
      System.out.println("Dialog is closed."); 
      System.exit(0); 
     } 
    }); 
} 

Я надеюсь, что ответ на ваш вопрос. :)

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