JOptionPane内部对话框没有标题栏或关闭按钮?

时间:2013-11-21 05:49:52

标签: java swing joptionpane

我正在将游戏作为练习项目。首次加载时,系统会提示用户登录或创建新播放器。如果用户选择创建新玩家,我想要发生的是新玩家创建表单(主游戏板是JDesktopPane,理想情况下,它将在{{ 1}}在它的顶层),其他一切都暂停,直到用户填写并提交此表单。

由于游戏中的其他用户输入任务是使用JPanel完成的,我认为这可能会起作用,因为我正在寻找一个像模态对话框一样的JOptionPane.showInternalOptionDialog。但是,我想要一些没有标题栏或关闭JPanel的东西,只需要确定和取消按钮。有没有办法显示没有这些的内部对话?或者其他一些让button行为像模态对话的方式?

2 个答案:

答案 0 :(得分:3)

您可以使用JDialog类

这是一个例子,试着激发它:

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class BDialog extends JDialog {

    private JButton okBtn = new JButton("OK");
    private JButton cancelBtn = new JButton("Cancel");
    private JLabel messageLbl = new JLabel("This is a message");

    public BDialog() {
        super(new JFrame(), true);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        setUndecorated(true);
        setLayout(new FlowLayout(FlowLayout.CENTER));
        add(messageLbl);
        add(okBtn);
        add(cancelBtn);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new BDialog();
    }

}

如果这有助于你解决它,请

答案 1 :(得分:0)

只需使用JFrame并使用setUndecorated方法

即可
JFrame myFrame = new JFrame("My Frame");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)       
myFrame.setBounds(10, 10, 300, 100);
myFrame.setUndecorated(true);

然后你可以添加一个面板来保存按钮