需要在監(jiān)聽事件里面設(shè)置
創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),小程序制作,十多年建站對成都廣告設(shè)計(jì)等多個(gè)領(lǐng)域,擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)。
if(jbutton.isEnabled()){
//響應(yīng)點(diǎn)擊事件
jubtton.setEnabled(false);
}
據(jù)我了解好像做不到你說的這個(gè)功能。
你要知道所有的應(yīng)用程序的運(yùn)行都是建立在操作系統(tǒng)運(yùn)行的基礎(chǔ)之上的,而java更是如此,因?yàn)槠鋍lass文件是依靠虛擬機(jī)運(yùn)行的,虛擬機(jī)又是安裝在Windows上的,
Win鍵,Esc鍵,Ctrl+Alt+Del,Alt+F4等組合鍵.其相應(yīng)的事件都是在操作系統(tǒng)里面就定義了的,且級別相當(dāng)高。而Windows是個(gè)多任務(wù)操作系統(tǒng)
如果當(dāng)前運(yùn)行的程序是你的Java程序,那么你可以處理以上按鍵的事件,不作任何處理就可以了,但是操作系統(tǒng)仍然可以感受到這幾個(gè)按鍵的按下,在運(yùn)行完你的程序的按鍵事件處理函數(shù)后,Windows仍然會響應(yīng)其相應(yīng)的按鍵事件,除非在你的事件處理代碼中有高級別線程的中斷指令,但是這幾乎不可能。
如果當(dāng)前任務(wù)不是你的程序,那么你對鍵盤按下的反應(yīng)沒有任何控制性。
Java的強(qiáng)項(xiàng)是多平臺下的分布式應(yīng)用,要實(shí)現(xiàn)你說的這個(gè)功能,可以使用C++寫一個(gè)后臺服務(wù)程序,當(dāng)運(yùn)行這個(gè)程序后,所有的按鍵事件首先被他所截獲,如果是以上按鍵組合,那么你就將這個(gè)事件中斷掉,否則再給WIndows處理。C對底層的控制能力僅次于匯編
添加了什么事件?
我印象中actionevent是可以禁止的,但是mouseevent是不能禁止的.就是說你如果設(shè)置了mouseevnt的左鍵啊右鍵啊什么的確實(shí)是不能禁止的.如果只有左鍵的話就有actionevent吧
參考代碼和注釋如下
import?javax.swing.*;
import?java.awt.*;
import?java.awt.event.*;
//本類繼承自JFrame,實(shí)現(xiàn)了ActionListener接口(重寫接口的actionPerformed方法)
public?class?FramDemo?extends?JFrame?implements?ActionListener{
JButton?jb0,jb1,jb2;//定義3個(gè)按鈕
boolean?flag=false;//設(shè)定一個(gè)標(biāo)記.用于確定是否禁止使用jb1和jb2按鈕
//構(gòu)造器--對窗口組件進(jìn)行初始化
public?FramDemo()?{
//1.頂部面板?:??包含按鈕?jb1和jb2
JPanel?jp1?=?new?JPanel();
jb1?=?new?JButton("按鈕1:背景變紅");
jb1.addActionListener(this);//給按鈕添加事件響應(yīng),點(diǎn)按鈕被點(diǎn)擊時(shí),執(zhí)行本類的actionPerformed方法
jb2?=?new?JButton("按鈕2:背景變藍(lán)");
jb2.addActionListener(this);
jp1.add(jb1);jp1.add(jb2);
add(jp1,BorderLayout.NORTH);//把面板添加到窗口的頂部(北面)
//2.頂部的面板:??包含jb0
JPanel?jp2?=?new?JPanel();
jb0=?new?JButton(flag?"讓按鈕恢復(fù)使用":"禁用其他按鈕");//改變按鈕的文字,如果flag為true就顯示?恢復(fù)...flag為false就顯示?禁用
//上面的一行代碼,相等于下面的5行代碼
// jb0=?new?JButton();
// if(flag){
// jb0.setText("讓按鈕恢復(fù)使用");
// }else{
// jb0.setText("禁用其他按鈕");
// }
jb0.addActionListener(this);
jp2.add(jb0);
add(jp2,BorderLayout.SOUTH);//把面板添加到窗口的頂部(南面)
//3.?窗口屬性的設(shè)置
setTitle("主窗口");//標(biāo)題
setSize(300,?260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//退出窗口后關(guān)閉程序
setVisible(true);//窗口可見
}
public?static?void?main(String[]?args)?{//main方法
new?FramDemo();//創(chuàng)建窗口實(shí)例,并顯示
}
//實(shí)現(xiàn)接口必須重寫(實(shí)現(xiàn))的方法actionPerformed
@Override
public?void?actionPerformed(ActionEvent?e)?{
//首先判斷是哪個(gè)按鈕被點(diǎn)擊了,然后執(zhí)行相應(yīng)的事件
if(e.getSource()==jb0){//如果是jb0按鈕被點(diǎn)擊
jb1.setEnabled(flag);//讓jb1不能使用(點(diǎn)擊無效)
jb2.setEnabled(flag);
flag?=?!flag;//讓標(biāo)記取反
jb0.setText(flag?"讓按鈕恢復(fù)使用":"禁用其他按鈕");//改變按鈕的文字
}else?if(e.getSource()==jb1){//如果是按鈕jb1被點(diǎn)擊?
this.getContentPane().setBackground(Color.RED);//窗體的內(nèi)容面板的背景色修改為紅色
}else?if(e.getSource()==jb2){//如果是jb2被點(diǎn)擊
this.getContentPane().setBackground(Color.BLUE);//窗體的內(nèi)容面板的背景色修改為藍(lán)色
}
}
}
效果如圖所示
完全正確!
以下幾種方法也行
document.getElementById("button1").disabled?=?true;
$("#button1").attr("disabled","disabled");
方法1, 禁用關(guān)閉按鈕, 如前面網(wǎng)友所述
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 設(shè)置關(guān)閉按鈕失效
方法2, 去掉dialog的title
dialog.setUndecorated(true);
這樣看不到title條, 但是也無法再移動(dòng)窗口
方法3, 自己定制一個(gè)JFrame做Dialog, 改寫title部分, 這個(gè)工作量就大了