重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
需要在监听事件里面设置
创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序制作,十多年建站对成都广告设计等多个领域,拥有丰富的网站建设经验。
if(jbutton.isEnabled()){
//响应点击事件
jubtton.setEnabled(false);
}
据我了解好像做不到你说的这个功能。
你要知道所有的应用程序的运行都是建立在操作系统运行的基础之上的,而java更是如此,因为其class文件是依靠虚拟机运行的,虚拟机又是安装在Windows上的,
Win键,Esc键,Ctrl+Alt+Del,Alt+F4等组合键.其相应的事件都是在操作系统里面就定义了的,且级别相当高。而Windows是个多任务操作系统
如果当前运行的程序是你的Java程序,那么你可以处理以上按键的事件,不作任何处理就可以了,但是操作系统仍然可以感受到这几个按键的按下,在运行完你的程序的按键事件处理函数后,Windows仍然会响应其相应的按键事件,除非在你的事件处理代码中有高级别线程的中断指令,但是这几乎不可能。
如果当前任务不是你的程序,那么你对键盘按下的反应没有任何控制性。
Java的强项是多平台下的分布式应用,要实现你说的这个功能,可以使用C++写一个后台服务程序,当运行这个程序后,所有的按键事件首先被他所截获,如果是以上按键组合,那么你就将这个事件中断掉,否则再给WIndows处理。C对底层的控制能力仅次于汇编
添加了什么事件?
我印象中actionevent是可以禁止的,但是mouseevent是不能禁止的.就是说你如果设置了mouseevnt的左键啊右键啊什么的确实是不能禁止的.如果只有左键的话就有actionevent吧
参考代码和注释如下
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//本类继承自JFrame,实现了ActionListener接口(重写接口的actionPerformed方法)
public class FramDemo extends JFrame implements ActionListener{
JButton jb0,jb1,jb2;//定义3个按钮
boolean flag=false;//设定一个标记.用于确定是否禁止使用jb1和jb2按钮
//构造器--对窗口组件进行初始化
public FramDemo() {
//1.顶部面板 : 包含按钮 jb1和jb2
JPanel jp1 = new JPanel();
jb1 = new JButton("按钮1:背景变红");
jb1.addActionListener(this);//给按钮添加事件响应,点按钮被点击时,执行本类的actionPerformed方法
jb2 = new JButton("按钮2:背景变蓝");
jb2.addActionListener(this);
jp1.add(jb1);jp1.add(jb2);
add(jp1,BorderLayout.NORTH);//把面板添加到窗口的顶部(北面)
//2.顶部的面板: 包含jb0
JPanel jp2 = new JPanel();
jb0= new JButton(flag?"让按钮恢复使用":"禁用其他按钮");//改变按钮的文字,如果flag为true就显示 恢复...flag为false就显示 禁用
//上面的一行代码,相等于下面的5行代码
// jb0= new JButton();
// if(flag){
// jb0.setText("让按钮恢复使用");
// }else{
// jb0.setText("禁用其他按钮");
// }
jb0.addActionListener(this);
jp2.add(jb0);
add(jp2,BorderLayout.SOUTH);//把面板添加到窗口的顶部(南面)
//3. 窗口属性的设置
setTitle("主窗口");//标题
setSize(300, 260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//退出窗口后关闭程序
setVisible(true);//窗口可见
}
public static void main(String[] args) {//main方法
new FramDemo();//创建窗口实例,并显示
}
//实现接口必须重写(实现)的方法actionPerformed
@Override
public void actionPerformed(ActionEvent e) {
//首先判断是哪个按钮被点击了,然后执行相应的事件
if(e.getSource()==jb0){//如果是jb0按钮被点击
jb1.setEnabled(flag);//让jb1不能使用(点击无效)
jb2.setEnabled(flag);
flag = !flag;//让标记取反
jb0.setText(flag?"让按钮恢复使用":"禁用其他按钮");//改变按钮的文字
}else if(e.getSource()==jb1){//如果是按钮jb1被点击
this.getContentPane().setBackground(Color.RED);//窗体的内容面板的背景色修改为红色
}else if(e.getSource()==jb2){//如果是jb2被点击
this.getContentPane().setBackground(Color.BLUE);//窗体的内容面板的背景色修改为蓝色
}
}
}
效果如图所示
完全正确!
以下几种方法也行
document.getElementById("button1").disabled = true;
$("#button1").attr("disabled","disabled");
方法1, 禁用关闭按钮, 如前面网友所述
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 设置关闭按钮失效
方法2, 去掉dialog的title
dialog.setUndecorated(true);
这样看不到title条, 但是也无法再移动窗口
方法3, 自己定制一个JFrame做Dialog, 改写title部分, 这个工作量就大了