jButton事件(简单快速拿分)散分 各位大侠,写一段代码实现jButton实现关闭JDialog功能和点击右上角关闭的红叉叉实现的一模一样,也就是说点击按钮就触发了那个红叉叉执行的代码。不需要写触发器,其实就是几行代码。可以随便写出自己的方法,只要能有效果 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Jbutton clickJDialog close setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); 不是不看中,给jbutton监听click事件,jdialog应该有close方法呢,调用下就行了吧。 import javax.swing.*;import java.awt.*;import java.awt.event.*;public class DialogDemo extends JFrame{ private JButton button=new JButton("打开"); private JDialog dialog=new JDialog(this); private TextField textField=new TextField(10); JButton btn=new JButton("close");; public DialogDemo(String title){ super(title); textField.setEditable(true); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ dialog.add(btn); dialog.pack(); dialog.setVisible(true);// textField.setText(dialog.getText()); } }); btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ dialog.dispose(); //这一行代码就可以关闭对话框 } }); Container contentPane=this.getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(button); contentPane.add(textField); setSize(500,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new DialogDemo("DialogDemo"); }} 需要引入jquery框架:<script type="text/javascript">$(function() { $('#editDialog').dialog({ autoOpen:false, width:'80%', modal : true, buttons:{ "保存":function(){}, //点击取消键dialog就会关闭 "取消":function(){$('#editDialog').dialog("close")} } });});</script><body> <div id="editDialog" title="修改界面" style="display:none"></div></body> 最近看了一条消息,仅供参考。如何去掉 JDialog 标题中的 "关闭"按钮,这个事情我查了很多资料包括国外的论坛。基本的结论就是:没有简单的办法。一般的方法就是:调用 this.setUndecorated(true) 这个方法把标题栏也去掉了。如果需要标题栏,只能自己写一个了,具体方法网上查查吧。另外一个简单的方式,保留“关闭”按钮,但是不生效,setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 这个就可以做到。如果不是有特别要求,我建议采用后一种方法,简单。另外一点,就是如何使用程序 “关闭”一个对话框。有两种方法:1 setVisible(false)这种关闭不彻底,并没有销毁资源,内存依然占用。2 setVisible(false); 再调用dispose() 这样就销毁资源了。 import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;public class Test extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private JButton btntest; public Test(){ super("按钮时间测试"); btntest=new JButton("Click Me"); btntest.addActionListener(this); getContentPane().add(btntest); this.setSize(88, 88); Dimension winSize=Toolkit.getDefaultToolkit().getScreenSize(); setLocation((winSize.width-this.getWidth())/2,(winSize.height-this.getHeight())/2); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource().equals(btntest)){ JOptionPane.showMessageDialog(null, "OK!"); } } public static void main(String[] args) { new Test().setVisible(true); }} 感觉楼主的这个命题和需要的答案有所区别嘛……楼主说:功能和点击右上角关闭的红叉叉实现的一模一样,也就是说点击按钮就触发了那个红叉叉执行的代码。首先我们要看看点击了右上角的按钮会发生什么,才能做到一样效果对不?但是,实际上右上角的那个X点了之后会发生什么也不是一定的setDefaultCloseOperation 之后,区别如下:DO_NOTHING_ON_CLOSE:点了之后什么都不做 HIDE_ON_CLOSE:点了之后 setVisible(false) —— 默认值DISPOSE_ON_CLOSE:点了之后 dispose()既然有三种不同的结果,那效果怎么能统一而论呢?楼主说:触发了那个红叉叉执行的代码那是希望然那个x按钮 doClick() ?这个 JDialog 是重量级的控件,他的边框包括按钮都是系统级的东西在程序中你是无法获得这个“x按钮”的引用的,java 没有提供这个方面的接口就算获得了又怎么样? 这又不是一个 JButton,没有 doClick() 可以让你调用你想让一个 JButton 完美的模拟那个X按钮,就也应该根据三种不同情况去触发不同的代码 switch (getDefaultCloseOperation()) { case JDialog.DO_NOTHING_ON_CLOSE: break; case JDialog.DISPOSE_ON_CLOSE: dispose(); break; case JDialog.HIDE_ON_CLOSE: default: setVisible(false); break; } button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ System.exit(0); } }); 话说当年第一次见到JButton时邪恶了一把,嘿嘿试着用中文来读一下 哥 System.exit(0);连虚拟机都给关了。 serial中的getInputString与getOutputString的具体用法。 java菜鸟求助,关于判断输入是否非空 有道难题 关于和数的问题 CMD中 javac A.java 问题:关于 A.java 的编码格式 一个非常奇怪的问题,请教各位! 急:为何这个程序没有用到paint方法,但又实现了他的功能!!!! 菜鸟学习遇问题?! 小数位数的问题 如何通过jdbc访问大于65535的端口? 光标定位偏移 request.getRequestDispatcher问题 java基础题目求助
JDialog close
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class DialogDemo extends JFrame{
private JButton button=new JButton("打开");
private JDialog dialog=new JDialog(this);
private TextField textField=new TextField(10);
JButton btn=new JButton("close");;
public DialogDemo(String title){
super(title);
textField.setEditable(true);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){ dialog.add(btn);
dialog.pack();
dialog.setVisible(true);
// textField.setText(dialog.getText());
}
});
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
dialog.dispose(); //这一行代码就可以关闭对话框
}
});
Container contentPane=this.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
contentPane.add(textField);
setSize(500,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new DialogDemo("DialogDemo");
}}
<script type="text/javascript">
$(function() {
$('#editDialog').dialog({
autoOpen:false,
width:'80%',
modal : true,
buttons:{
"保存":function(){},
//点击取消键dialog就会关闭
"取消":function(){$('#editDialog').dialog("close")}
}
});
});
</script><body>
<div id="editDialog" title="修改界面" style="display:none"></div>
</body>
一般的方法就是:调用 this.setUndecorated(true) 这个方法把标题栏也去掉了。如果需要标题栏,只能自己写一个了,具体方法网上查查吧。
另外一个简单的方式,保留“关闭”按钮,但是不生效,setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 这个就可以做到。
如果不是有特别要求,我建议采用后一种方法,简单。
另外一点,就是如何使用程序 “关闭”一个对话框。有两种方法:1 setVisible(false)这种关闭不彻底,并没有销毁资源,内存依然占用。
2 setVisible(false); 再调用dispose() 这样就销毁资源了。
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;public class Test extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;
private JButton btntest;
public Test(){
super("按钮时间测试");
btntest=new JButton("Click Me");
btntest.addActionListener(this);
getContentPane().add(btntest);
this.setSize(88, 88);
Dimension winSize=Toolkit.getDefaultToolkit().getScreenSize();
setLocation((winSize.width-this.getWidth())/2,(winSize.height-this.getHeight())/2);
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource().equals(btntest)){
JOptionPane.showMessageDialog(null, "OK!");
}
}
public static void main(String[] args) {
new Test().setVisible(true);
}
}
功能和点击右上角关闭的红叉叉实现的一模一样,也就是说点击按钮就触发了那个红叉叉执行的代码。首先我们要看看点击了右上角的按钮会发生什么,才能做到一样效果对不?
但是,实际上右上角的那个X点了之后会发生什么也不是一定的
setDefaultCloseOperation 之后,区别如下:
DO_NOTHING_ON_CLOSE:点了之后什么都不做
HIDE_ON_CLOSE:点了之后 setVisible(false) —— 默认值
DISPOSE_ON_CLOSE:点了之后 dispose()既然有三种不同的结果,那效果怎么能统一而论呢?
楼主说:触发了那个红叉叉执行的代码
那是希望然那个x按钮 doClick() ?
这个 JDialog 是重量级的控件,他的边框包括按钮都是系统级的东西
在程序中你是无法获得这个“x按钮”的引用的,java 没有提供这个方面的接口
就算获得了又怎么样? 这又不是一个 JButton,没有 doClick() 可以让你调用你想让一个 JButton 完美的模拟那个X按钮,
就也应该根据三种不同情况去触发不同的代码
switch (getDefaultCloseOperation()) {
case JDialog.DO_NOTHING_ON_CLOSE:
break;
case JDialog.DISPOSE_ON_CLOSE:
dispose();
break;
case JDialog.HIDE_ON_CLOSE:
default:
setVisible(false);
break;
}
public void actionPerformed(ActionEvent ae){ System.exit(0);
}
});
哥 System.exit(0);连虚拟机都给关了。