十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你说的是打开非模态对话框。
为文山州等地区用户提供了全套网页设计制作服务,及文山州网站建设行业解决方案。主营业务为网站建设、网站设计、文山州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
如果模态对话框不关闭,无法操作主窗体。喊孝坦如果非模态对话框不关闭,仍然可以操作主窗体。
//构造模态对话框
final Dialog d = new Dialog(this, "模态对话框", true);
//构造非模态对话框
final Dialog d = new Dialog(this, "模慎圆态对话框", false);
样例程序如下:
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main extends JFrame implements ActionListener {
JButton btnModel, btnNonModel;
public Main() {
super("对话框");
this.setLayout(new FlowLayout());
btnModel = new JButton("打开模态对话框");
btnNonModel = new JButton("打开非模态对话框");
this.add(btnModel);
this.add(btnNonModel);
btnModel.addActionListener(this);
btnNonModel.addActionListener(this);
this.setSize(200, 200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Main();
}
@Override
public void actionPerformed(ActionEvent arg0) {
JButton btn = (JButton) arg0.getSource();
if(btn == btnModel) { //打开模态对话框
final Dialog d = new Dialog(this, "模态对话框", true);
d.setSize(800, 600);
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
d.setVisible(false);
}
});
d.setVisible(true);
}
else if(btn == btnNonModel) { //打开非模态对话框
final Dialog d = new Dialog(this, "非模态对话框", false);
d.setSize(800, 600);
d.addWindowListener(new WindowAdapter() 郑桐{
public void windowClosing(WindowEvent evt) {
d.setVisible(false);
}
});
d.setVisible(true);
}
}
}
setModal(true)时,显示的,是模态窗口,此时界面线程阻塞,无法操作其他迅穗散界面了,只能操作族肢此对亩氏话框上的内容。
一般用于显示警告/错误信息、录入信息等。
//问题的关键在于,如何从jDialog中获取jFrame的引用。
//我是用内部类的形式解决该问题的。而且直接操作jFrame的早清组件。
//还可以在新建自定义jDialog类时,传入jFrame的引用。
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class FrameTest extends JFrame {
private JTextArea textArea;
public static void main(String[] args) {
new FrameTest();
}
public FrameTest() {
this.setSize(400, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
this.setVisible(true);
}
private void initPanel() {
JButton button = new JButton("Add");
textArea = new JTextArea();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openDialog();
}
});
this.add(button, BorderLayout.NORTH);
this.add(textArea, BorderLayout.CENTER);
}
private void openDialog() {
final JDialog dialog = new JDialog(this, true);
含友 dialog.setSize(300, 200);
dialog.setLocation(getX() + 50, getY() + 50);
dialog.setLayout(new GridLayout(3, 2));
final JTextField name = new JTextField(10);
final JTextField phone = new JTextField(10);
JButton save = new JButton("保存");
JButton cancel = new JButton("取消");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.append(name.getText() + ":" + phone.getText() + "\n");
dialog.dispose();
}
});
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
dialog.add(new JLabel("姓名:"));
dialog.add(name);
dialog.add(new JLabel("Tel :"));
dialog.add(phone);
dialog.add(save);
谈睁槐 dialog.add(cancel);
dialog.setVisible(true);
}
}