Java在Swing中如何实现弹出一个对话框的效果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java在Swing中如何实现弹出一个对话框的效果?相关的知识,希望对你有一定的参考价值。
//要求如下
/*
*如何在程序中UserFrame构造方法中第一行弹出一个类似的对话框,
*其中有两个输入框,分别输入用户名和密码,可以返回两个String
*而不采用如下split方法来分别验证用户名和密码?
*我曾试图自己写一个对话框,但是程序在弹出对话框后没有暂停执行等待输入,
*而是,即使不输入正确的用户名和密码,也会弹出UserFrame,代码如下:
*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class UserFrame extends JFrame
public UserFrame()
// 即以下此行中是否有现成写好的类可以显示一个对话框,有两个输入框
String str = JOptionPane.showInputDialog(this, new String[]
"Please input username", "password" , "login",
DO_NOTHING_ON_CLOSE);
String username = null;
String password = null;
try
if (str == null || "".equals(str.trim()))
System.out.println("no input");
System.exit(0);
String[] info = str.split(",");
username = info[0];
password = info[1];
catch (Exception e)
System.exit(0);
if (username.equals("scott") && password.equals("tiger"))
this.setContentPane(getContent());
this.setBounds(250, 100, 600, 480);
this.setTitle("UI");
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
else
System.exit(0);
public JPanel getContent()
JPanel panel = new JPanel();
JButton button = new JButton("doSomething");
button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
System.out.println("doSomething");
);
panel.add(button);
return panel;
public final static void main(String[] args)
UserFrame uf = new UserFrame();
uf.setVisible(true);
如何写?
可以使用JoptionPane:
有几种提示框:
第一种:
JOptionPane.showMessageDialog(jPanel, "提示消息", "标题",JOptionPane.WARNING_MESSAGE);
第二种:
int n = JOptionPane.showConfirmDialog(null, "你高兴吗?", "标题",JOptionPane.YES_NO_OPTION);//返回的是按钮的index i=0或者1
第三种:
Object[] obj2 = "足球", "篮球", "乒乓球" ;
String s = (String) JOptionPane.showInputDialog(null,"请选择你的爱好:\\n", "爱好", JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), obj2, "足球");
参考技术A 简单啊,你先不要让UserFrame的visible值设为true,就先弹出对话框,等对话框执行完再验证,如果验证通过就setVisible(true),否则直接exit就行了..具体自己实现吧,可以的..也不难...本回答被提问者采纳 参考技术B 用Dialog类,,具体大小,模式设置下,看下API就行,不用别人帮你写的 参考技术C 可以自己写一个这样的输入框,,JAVA Swing中如何实现一个非阻塞的对话框。
我现在JOptionPane.showMessageDialog必须等点击了确定按钮,程序才能继续运行。请教下怎么样不让它阻塞下去啊。
JOptionPane要改成非模态的那就繁琐了,他的按钮都写在了UI里,只能改UI类建议你还是直接new一个JDialog比较可控,只要写一次,下回就可以复用了.
JDialog的setModal(false)就是你说的"不阻塞" 参考技术A 加个多线程去处理和显示JOptionPane.showMessageDialog 参考技术B 确定是阻塞了么?还是模态了?
以上是关于Java在Swing中如何实现弹出一个对话框的效果?的主要内容,如果未能解决你的问题,请参考以下文章
java swing中怎么实现点击jframe的关闭按钮后,弹出提示框?