2016-10-01 23 views
-1

我正在尝试创建MessageBox Creator。如何隐藏JFrame,但随后在消息框关闭时打开它

我试图隐藏创建者当消息框打开 ,然后显示消息框关闭时。我使用下面的Eclipse插件霓虹灯:

  • 的WindowBuilder
  • 摇摆设计师

帮我创建程序。

一个类似的是在这里,但它并没有帮助:Click Me

的源代码是在这里:

package org.us.me.****.messagebox.creator; 

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
import javax.swing.JProgressBar; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class MessageBoxCreator { 

    private JFrame frmD; 
    private JTextField txtMessageGoesHere; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        MessageBoxCreator window = new MessageBoxCreator(); 
        window.frmD.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public MessageBoxCreator() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frmD = new JFrame(); 
     frmD.setTitle("MessageBox: Creator"); 
     frmD.setBounds(100, 100, 260, 113); 
     frmD.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frmD.getContentPane().setLayout(null); 

     JTextField MessageBox = new JTextField(); 
     MessageBox.setText("Message goes here..."); 
     MessageBox.setBounds(10, 11, 222, 20); 
     frmD.getContentPane().add(MessageBox); 
     MessageBox.setColumns(10); 

     JButton btnGenerate = new JButton("Generate"); 
     btnGenerate.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       JOptionPane.showMessageDialog(null, MessageBox); 

      } 
     }); 
     btnGenerate.setBounds(10, 42, 86, 23); 
     frmD.getContentPane().add(btnGenerate); 
    } 
} 

请帮助。

+0

顺便说一下,我仍然看着,但我仍然会在这个领域寻找答案 –

+1

你为什么要这样做?似乎迷失方向,特别是如果消费者的框架最大化 –

回答

0

好像你正试图隐藏框架上的按钮点击然后弹出的按钮点击你想要的初始框架可见。

最简单直接的方法是创建自己的弹出框。

尝试了这一点:

class CustomPopup extends JFrame 
    { 
    public CustomPopup() 
    { 
     frmD.setVisible(false); 
     this.setName("Popup"); 
     this.setLayout(new BorderLayout()); 
     JLabel l = new JLabel("Enter Message here"); 
     JButton b = new JButton("Submit"); 
     b.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       frmD.setVisible(true); 
       CustomPopup.this.setVisible(false); 
       CustomPopup.this.dispose(); 
      } 
     }); 

     this.add(l,BorderLayout.CENTER); 
     this.add(b,BorderLayout.SOUTH); 
     this.setSize(300, 150); 
     this.setResizable(false); 
     this.setDefaultCloseOperation(0); 
     this.setVisible(true); 
    } 

} 

然后在您的按钮动作监听器做到这一点:

btnGenerate.addActionListener(new ActionListener() 
{ 
     public void actionPerformed(ActionEvent e) 
     { 
      new CustomPopup(); 
     } 
    }); 

注:上述例子是相对于你的代码。我在示例中使用了边界布局来弹出窗口,因为它是最简单的实现。我相信你可以自定义自定义弹出窗口的外观和风格。还有更多选项可以用自定义设置创建弹出窗口。

请参阅本作的详细信息:http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

0

我认为设计不好,而是使框架隐藏和显示变化 这一行:

JOptionPane.showMessageDialog(null, MessageBox); 

frmD.setVisible(false); 
JOptionPane.showMessageDialog(null, MessageBox); 
frmD.setVisible(true); 
相关问题