需要在监听事件里面设置
if(jbutton.isEnabled()){
jubtton.setEnabled(false);
}
据我了解好像做不到你说的这个功能.
你要知道所有的应用程序的运行都是建立在操作系统运行的基础之上的,而java更是如此,因为其class文件是依靠虚拟机运行的,虚拟机又是安装在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{
//构造器--对窗口组件进行初始化
public?FramDemo()?{
JPanel?jp1?=?new?JPanel();
jb1?=?new?JButton("按钮1:背景变红");
add(jp1,BorderLayout.NORTH);//把面板添加到窗口的顶部(北面)
jb0=?new?JButton(flag?"让按钮恢复使用":"禁用其他按钮");//改变按钮的文字,如果flag为true就显示?恢复...flag为false就显示?禁用
//jb0=?new?JButton();
//if(flag){
//jb0.setText("让按钮恢复使用");
//}else{
//jb0.setText("禁用其他按钮");
//}
jb0.addActionListener(this);
setTitle("主窗口");//标题
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//退出窗口后关闭程序
setVisible(true);//窗口可见
public?static?void?main(String[]?args)?{//main方法
new?FramDemo();//创建窗口实例,并显示
//实现接口必须重写(实现)的方法actionPerformed
@Override
public?void?actionPerformed(ActionEvent?e)?{
flag?=?!flag;//让标记取反
jb0.setText(flag?"让按钮恢复使用":"禁用其他按钮");//改变按钮的文字
this.getContentPane().setBackground(Color.RED);//窗体的内容面板的背景色修改为红色
this.getContentPane().setBackground(Color.BLUE);//窗体的内容面板的背景色修改为蓝色
效果如图所示
完全正确!
以下几种方法也行
document.getElementById("button1").disabled?=?true;
$("#button1").attr("disabled","disabled");
方法1, 禁用关闭按钮, 如前面网友所述
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 设置关闭按钮失效
dialog.setUndecorated(true);
这样看不到title条, 但是也无法再移动窗口