簡體   English   中英

如何隱藏 JFrame,然后在消息框關閉時打開它

[英]How to hide a JFrame but then open it when the message box closes

我正在嘗試創建一個 MessageBox Creator。

我試圖在消息框打開時隱藏創建者,然后在消息框關閉時顯示。 我正在為 Eclipse Neon 使用以下插件:

  • 窗口生成器
  • 揮桿設計師

幫助我創建程序。

一個類似的在這里,但它沒有幫助: 點擊我

源代碼在這里:

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);
    }
}

請幫忙。

似乎您試圖在單擊按鈕時隱藏框架,然后在單擊彈出窗口的按鈕時希望初始框架恢復可見。

最簡單直接的方法是創建自己的彈出框。

試試這個:

  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

我認為設計不好,但為了讓框架隱藏和顯示改變這一行:

JOptionPane.showMessageDialog(null, MessageBox);

frmD.setVisible(false);
JOptionPane.showMessageDialog(null, MessageBox);
frmD.setVisible(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM