2015-11-22 2 views
-1

Я узнаю о потоках, и у меня проблемы с ним. Я пытаюсь сделать 2 кадра, один является основным фреймом, а другой будет показан позже после нажатия на кнопку. Я хочу остановить основной кадр, пока работает новый кадр. Можете ли вы, ребята, помочь мне с очень простым примером для этого? (И новый кадр будет закрыт после нажатия на кнопку тоже). Достаточно всего 2 кадра с кнопкой на каждом. Очень признателен!Создать новую тему для нового JFrame

+1

Вы должны [узнать о свинге] (http://docs.oracle.com/javase/tutorial/uiswing/). Особенно это касается [диалогов] (http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html). – Seelenvirtuose

+0

Я знаю о диалоговом окне, но я прошу приложение для своего приложения – NerdyGuy

+0

И какая у вас проблема? Вы действительно ожидаете, что pepole напишет вам код? Такие вопросы полностью вне темы на SO! – Seelenvirtuose

ответ

4

Вам следует избегать the use of multiple JFrames, вместо этого использовать modal dialogs. JOptionPane предлагает тонну хороших, простых & гибких методов для этого.

Вот пример. Когда вы нажмете кнопку, появится диалоговое окно сверху JFrame. Основной JFrame больше не будет доступен для кликов, так как JOptionPane.showMessageDialog() создает modal window.

import java.awt.EventQueue; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Example { 

    public Example() { 

     JFrame frame = new JFrame(); 

     JButton button = new JButton("Click me"); 
     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JOptionPane.showMessageDialog(frame, "I'm a dialog!"); 
      } 
     }); 

     frame.getContentPane().setLayout(new FlowLayout()); 
     frame.getContentPane().add(button); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Example(); 
      } 
     }); 
    } 


} 

Выход:

enter image description here

+0

Мне нравится использование gif –

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