在java中實(shí)現(xiàn)一個(gè)消息框, 常見的有兩種方式

創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站設(shè)計(jì)公司,創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、全網(wǎng)整合營銷推廣及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
第一種方法:?JOptionPane 類. 創(chuàng)建1個(gè)彈窗.
例一:簡單的消息提示框
JOptionPane.showMessageDialog(null,?"消息提示");
2.例二:帶警告圖片的消息提示框
JOptionPane.showMessageDialog(null,?"提示消息",?"標(biāo)題",JOptionPane.WARNING_MESSAGE);
第二種方法?彈窗JDialog 設(shè)置setModal(true); 也可以實(shí)現(xiàn). 類似于寫JFrame
兩者區(qū)別在于:
JOptionPane 代碼簡短, 適應(yīng)一些普通需求, 比如彈出消息提示, 彈出警告信息, 提示用戶輸入, 提示用戶選擇, 等簡單的場景
JDialog 代碼略長, 組件需要自行定義. ?滿足一些復(fù)雜的需求. 比如多個(gè)輸入框 ,多個(gè)按鈕等
jsp servlet?..你可以在Servlet中..reques.setAttribute("error","賬號密碼錯(cuò)誤!");然后在jsp中.判斷是否存在這個(gè)值..再使用javascript彈出咯..jsp:導(dǎo)入包:%@taglib prefix="c" uri=" "%判斷這樣寫:c:if test="${not empty error}"?0?2 ?0?2 ?0?2 input type="hidden" value="${error}" id="error_id"?0?2 ?0?2 ?0?2 script type="text/javascript"?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2!--?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 alert(document.getElementById("error_id").value);?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2//--?0?2 ?0?2 ?0?2 /script/c:if
你試下吧..不懂..Call我
寫了一個(gè)很簡單的案例,可以參考和修改
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.JTextField;
public?class?FromeDemo?extends?JFrame{
JButton?jbutton;
public?FromeDemo()?{
jbutton?=?new?JButton("彈出2個(gè)文本框");
jbutton.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
JDialog?jd?=?new?JDialog();
jd.setBounds(320,?180,?260,?100);
jd.setTitle("彈出文本框");
jd.getContentPane().setLayout(new?GridLayout(2,?2));
jd.add(new?JLabel("文本框一"));
jd.add(new?JTextField(80));
jd.add(new?JLabel("文本框二"));
jd.add(new?JTextField(80));
jd.setModal(true);//確保彈出的窗口在其他窗口前面
jd.setVisible(true);
}
});
add(jbutton,BorderLayout.SOUTH);
setBounds(300,?100,?320,?320);
setTitle("測試");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public?static?void?main(String?args[])?{
new?FromeDemo();
}
}
JAVA彈窗,有下面常見的2種方法實(shí)現(xiàn):
通過JDialog(模式窗口) 類來實(shí)現(xiàn).里面的寫法類似JFrame
重點(diǎn)方法提示:?setModal(true);
//當(dāng)設(shè)置為true表示,如果不關(guān)閉這個(gè)彈窗,那么主界面的其他組件都無法操作,該彈窗置于其他窗口的前面
//當(dāng)設(shè)置為false表示,可以繞開本彈窗,對主界面的其他組件進(jìn)行操作
優(yōu)點(diǎn): 功能強(qiáng)大, ?擴(kuò)展性強(qiáng)
缺點(diǎn): 代碼量大.
示例圖
通過JOptionPane(提示框) 來實(shí)現(xiàn)
效果圖如下
優(yōu)點(diǎn): 代碼量少,簡單,方便, 普通場景已經(jīng)夠用
缺點(diǎn): 擴(kuò)展性不夠, 復(fù)雜邏輯難以實(shí)現(xiàn).
下面寫一個(gè)具體案例
場景:當(dāng)用于對文本域的文字,進(jìn)行操作后,那么退出時(shí),提示用戶, 是否要保存已經(jīng)更改后的內(nèi)容. ?如果用戶沒有修改內(nèi)容,那么不用提示
重點(diǎn)代碼
addDocumentListener--用于實(shí)現(xiàn)對文本內(nèi)容發(fā)生改變時(shí)進(jìn)行響應(yīng)
addWindowListener---用于實(shí)現(xiàn)對窗口進(jìn)行操作時(shí)進(jìn)行響應(yīng)
完整代碼如下
import?java.awt.Font;
import?java.awt.event.*;
import?javax.swing.*;
import?javax.swing.event.*;
public?class?JDDemo?extends?JFrame?implements?DocumentListener,WindowListener{
JTextArea?jta;
boolean?flag;
public?JDDemo()?{
jta?=?new?JTextArea();//文本域
jta.setText("床前明月光");//文本域的文字--可以通過IO加載txt文檔的文字
jta.setFont(new?Font("宋體",Font.BOLD,?20));//文本域的字體
jta.setLineWrap(true);//設(shè)置自動換行
jta.getDocument().addDocumentListener(this);//添加文檔變化事件的響應(yīng).比如修改,刪除等
JScrollPane?jsp?=?new?JScrollPane(jta);//滾動面板(當(dāng)文字太多時(shí),顯示滾動條)
add(jsp);
setTitle("主窗口");//標(biāo)題
setSize(300,?260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//點(diǎn)擊窗口的關(guān)閉按鈕時(shí),執(zhí)行windowClosing的代碼
addWindowListener(this);
setVisible(true);//窗口可見
}
public?static?void?main(String[]?args)?{
new?JDDemo();
}
//實(shí)現(xiàn)WindowListener接口,需要重寫下面的6個(gè)方法,?windowClosing專門處理關(guān)閉時(shí)的方法
public?void?windowOpened(WindowEvent?e)?{
}
public?void?windowClosing(WindowEvent?e)?{
if(flag){
int?n?=?JOptionPane.showConfirmDialog(null,?"已經(jīng)更改了內(nèi)容,需要保存后再退出嗎?",?"提示",JOptionPane.YES_NO_OPTION);
//n等于-1表示關(guān)閉了彈出的對話框等情況的默認(rèn)值
//n等于0(JOptionPane.YES_OPTION)表示選擇了Yes
//n等于1(JOptionPane.NO_OPTION)表示選擇了No
if(n==JOptionPane.YES_OPTION){
//把文字保存到文件的代碼省略...
System.out.println("正在使用IO進(jìn)行保存..ing");
closeFrame();//關(guān)閉窗口并退出
}else?if(n==JOptionPane.NO_OPTION){
System.out.println("放棄保存修改.馬上退出");
closeFrame();
}
}else{
closeFrame();
}
}
public?void?windowClosed(WindowEvent?e)?{
}
public?void?windowIconified(WindowEvent?e)?{
}
public?void?windowDeiconified(WindowEvent?e)?{
}
public?void?windowActivated(WindowEvent?e)?{
}
public?void?windowDeactivated(WindowEvent?e)?{
}
//文檔事件,有下面三個(gè),如果觸發(fā)其中一個(gè),都可以認(rèn)為修改了文檔,所以需要在退出時(shí)進(jìn)行提示,是否保存
public?void?insertUpdate(DocumentEvent?e)?{//插入
flag=true;
}
public?void?removeUpdate(DocumentEvent?e)?{//刪除
flag=true;
}
public?void?changedUpdate(DocumentEvent?e)?{//改變
flag=true;
}
//關(guān)閉窗口的方法
public?void?closeFrame(){
this.setVisible(false);//窗口不可見
this.dispose();//窗口銷毀
System.exit(0);//JVM虛擬機(jī)退出
}
}
運(yùn)行效果圖:
網(wǎng)頁標(biāo)題:java代碼中彈框代碼 java實(shí)現(xiàn)彈窗
當(dāng)前URL:http://chinadenli.net/article4/ddgsdie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站制作、移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)