java代码添加模态框 java动态加载类框架
问下各位大神,在java编写的程序中点击菜单栏的一个菜单项,比如在格式菜单下的字体和颜色,弹出一个窗口
你说的是打开非模态对话框。
如果模态对话框不关闭,无法操作主窗体。喊孝坦如果非模态对话框不关闭,仍然可以操作主窗体。
//构造模态对话框
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);
}
}
}
Java swing 问题
setModal(true)时,显示的,是模态窗口,此时界面线程阻塞,无法操作其他迅穗散界面了,只能操作族肢此对亩氏话框上的内容。
一般用于显示警告/错误信息、录入信息等。
java 如何在jDialog里调用jFrame的组件
//问题的关键在于,如何从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);
}
}
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java代码添加模态框 java动态加载类框架
本文地址: https://pptw.com/jishu/296212.html