如何自定义一个JDialog,它能够返回一个值。就像JOptionPane中的静态方法,showMessageDialog();

如何自定义一个JDialog,它能够返回一个值。就像JOptionPane中的静态方法,showMessageDialog();

2个回答

如果一定要是JDialog的话

可以添加一个方法,比如

ret __showDialog(){
setModal(true);
setVisible(true);//阻塞的
return someValue;
}

import java.awt.Component;
import java.awt.Font;

import javax.swing.JDialog;
import javax.swing.JPanel;

public class FontChooser extends JPanel {
private Font retFont = null;

public FontChooser() {
    // ...
}

public Font getSelectedFont() {
    return retFont;
}

public static Font showDialog(Component par, Font initFont, String title) {
    FontChooser fc = new FontChooser();
    // fc初始化
    JDialog dialog = new JDialog();
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setTitle(title);
    // ... dialog 设置
    dialog.setContentPane(fc);
    dialog.setModal(true);
    dialog.setVisible(true);
    return fc.getSelectedFont();
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何自定义一个JDialog,它能够返回一个值。就像JOptionPane中的静态方法,showMessageDialog();
如何自定义一个JDialog,它能够返回一个值。就像JOptionPane中的静态方法,showMessageDialog();
请教一个SWING中JOPTIONPANE和JDIALOG的问题
我现在想点击一个按钮,然后屏幕中央就跳出一个矩形框,类似JOPTIONPANE这样的。然后在矩形框里面可以添加一些JTEXTFIELD,JLABEL,JBUTTON之类的东西,类似JPANEL的功能。但是JOPTIONPANE好像只能显示一条MESSAGE吧。。好像不能在里面添加一些JTEXTFIELD,JLABEL之类的东西。。rn请问高手我应该如何操作呢。。rn谢谢!
在JDialog中如何弹出一个新的JDialog?
在JDialog有个按钮 点击后关闭当JDialog 然后弹出一个新的JDialog...里面有个输入框rnrnrn请问如何实现 ?rnrn
感觉Swing中的JOptionPane和JDialog类重复~~
如题,JDialog到底和JOptionPane有什么不同的啊??rn就目前我所了解的看来,JDialog可以完成的事,JOptionPane都可以做啊~~rnrn望论坛的朋友解答以下,谢谢
JOptionPane的showMessageDialog不能正常信息(Message)
大家好,今天遇到一个Java JOptionPane显示的问题,希望向大家讨教一下。rnrn我的program是把这个PSDurationPanel 放到另外一个panel里。如果单独运行的话位置(1) & (2)都可以显示"Duration List Successfully Updated!",rn但如果把这个PSDurationPanel放到另一个panel里的话,只有位置(1)的那个语句才能正常显示"Duration List Successfully Updated!"。rnrn刚才在网上搜了半天,也翻了论坛里关于JOptionPane的帖子,好像还有不人提到这个。rnrn先在这里谢谢大家了。rn大家好,今天遇到一个Java JOptionPane显示的问题,希望向大家讨教一下。rnrn我的program是把这个PSDurationPanel 放到另外一个panel里。如果单独运行的话位置(1) & (2)都可以显示"Duration List Successfully Updated!",rn但如果把这个PSDurationPanel放到另一个panel里的话,只有位置(1)的那个语句才能正常显示"Duration List Successfully Updated!"。rnrn刚才在网上搜了半天,也翻了论坛里关于JOptionPane的帖子,好像还有不人提到这个。rnrn先在这里谢谢大家了。rn[code=Java]import PS.PSPanel;rnimport PS.basic.PSBoard;rnimport PS.data.PSData;rnimport PS.swing.*;rnimport java.awt.*;rnimport java.awt.event.*;rnimport java.text.NumberFormat;rnimport java.util.Vector;rnimport javax.swing.*;rnimport javax.swing.table.*;rnrnrnpublic class PSDurationPanel extends JPanel implements ActionListenerrnrn //declare要用的variable rn rn rn /** Creates a new instance of PSDurationPanel */rn public PSDurationPanel(PSBoard board, PSPanel psPanel, JPanel parent) rn super();rn this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));rn rn this.board = board;rn this.data = board.getCustomerData();rn this.psPanel = psPanel;rn this.parent = parent;rn this.durationList = data.getDuration();rn rn setUpFormats();rn rn this.add(Box.createRigidArea(new Dimension(this.getWidth(),PSStandardSize.SECTION_GAP))); rn this.add(createDurationInfo());rn this.add(Box.createRigidArea(new Dimension(this.getWidth(),PSStandardSize.SECTION_GAP))); rn this.add(createTable());rn this.add(Box.createRigidArea(new Dimension(this.getWidth(),PSStandardSize.SECTION_GAP))); rn this.add(createButton()); rn[color=#FF0000] //(1)如果把这个语句写在这里,对话框里的字就显示出来了rn JOptionPane.showMessageDialog(this, "Duration List Successfully Updated!", "Message", JOptionPane.WARNING_MESSAGE); [/color] rn rn rn public JComponent createDurationInfo()rn //新建createDurationInfo panelrn rn rn public JComponent createTable()rn rn //新建JTablern rn rn rn protected JComponent createButton()rn //新建Jbuttonrn rn rn protected void updateData()rn //更新数据rn rn rn protected void insertRecord() rn //添加记录 rn rn rn public void actionPerformed(ActionEvent e)rn if(e.getSource() == okButton)rn rn [color=#FF0000]rn //(2)如果把这个语句写在这里,对话框里的字就显示不出来rn JOptionPane.showMessageDialog(this, "Duration List Successfully Updated!", "Message", JOptionPane.WARNING_MESSAGE);[/color]rn updateData(); rn else if(e.getSource() == cancelButton)rn psPanel.clearInfoPanel(); rn if(parent instanceof PSSCDFPanel)rn PSSCDFPanel panel = new PSSCDFPanel(board, psPanel);rn psPanel.setInfoPanel(panel);rn rn else if(e.getSource() == addButton)rn insertRecord();rn else if(e.getSource() == deleteButton)rn for(int i = 0; i < tableView.getRowCount(); i ++)rn if(tableView.getValueAt(i,1).toString().equals("true"))rn dataModel.removeRow(i);rn i--;rn rn rn rn rn rn //Create and set up number formats. These objects alsorn //parse numbers input by user.rn private void setUpFormats() rn durationFormat = NumberFormat.getNumberInstance();rnrn rnrn /**rn * Create the GUI and show it. For thread safety,rn * this method should be invoked from thern * event dispatch thread.rn */rn private static void createAndShowGUI() rnrn //Create and set up the window.rn JFrame frame = new JFrame("FormattedTextFieldDemo");rn frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rnrn //Add contents to the window. rn frame.getContentPane().add(new PSDurationPanel(new PSExtendBoard(), null, null)); rnrn //Display the window.rn frame.pack();rn frame.setVisible(true);rn rnrn public static void main(String[] args) rn rn String laf = UIManager.getSystemLookAndFeelClassName();rn try rn UIManager.setLookAndFeel(laf);rn // If you want the Cross Platform L&F instead, comment out the above line andrn // uncomment the following:rn // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());rn catch (UnsupportedLookAndFeelException exc) rn System.err.println("Warning: UnsupportedLookAndFeel: " + laf);rn catch (Exception exc) rn System.err.println("Error loading " + laf + ": " + exc);rn rn rn //Schedule a job for the event dispatch thread:rn //creating and showing this application's GUI.rn SwingUtilities.invokeLater(new Runnable() rn public void run() rn //Turn off metal's use of bold fontsrn UIManager.put("swing.boldMetal", Boolean.FALSE);rn createAndShowGUI();rn rn );rn rn[/code]rnrnrnrnrn
如何从一个自定义的function 中返回多个值??
rnfunction GetData(Aname:string):integer;rnvar age:integer;rn sex:string;rnbeginrn age:=0;rn sex:='';rn with AdoQuery1 dorn beginrn close;rn sql.text:='select * from 员工表 where 姓名='''+AName+'''';rn open;rn if Not Eof then rn beginrn age:=FieldByName('年龄').asInteger;rn sex:=FieldByName('性别').asString;rn end; rn end; rn Result:=age;rnend;rnrn 这个function只能返回 age,但是我想把 sex 也返回,那该怎么写??
TStoredProc如何返回一个值
使用下面的函数,?的地方应该填什么,我才能得到一个返回值?rnString TDM::getsheetid(int moduleid)rnTStoredProc * storedproc1;rnString sheetid;rnstoredproc1 = new TStoredProc(this);rntrystoredproc1->DatabaseName = "xkldbs";rn storedproc1->StoredProcName = "getsheetid";rn storedproc1->ParamByName("moduleid")->AsInteger = moduleid;rn storedproc1->Prepare();rn storedproc1->Open();rn sheetid = ?;rn rn__finallyrn delete storedproc1;rn rnreturn sheetid;rnrnrn我的存储过程是有一个返回值的(字符串)!
如何返回一个处理结果值???
这是当当网上一段代码,其功能是实现,把看过的商品放入购物车。rnrn如何在asp.net实现类似功能?关键问题是:asp.net能不能也象这样提交一个请求,到文件或者其他什么的,返回一个,结果值?rnrn-------超级连接-------rn放入暂存架rnrn-------脚本语言-------rnfunction AddToFavorlist(ProdID)rn rn// tvalue=send_xmlhttp("/customer/cust_addfavor.asp","prodid="+ProdID+"");rnrn var Features="dialogHeight:0px;dialogWidth:0px;center:no;scroll:yes;status:no;top:-2000;left:-1000";rn var tvalue=window.showModalDialog("/customer/cust_addfavor.asp?productid="+ProdID+"&quantity=1"+"&time=6:40:35",window,Features);rn if(tvalue=="nologin")rn alert("您还没有登陆,请登陆后在进行操作!谢谢");rn return;rn rn if(tvalue=="noins")rn //放入暂存架时发生以外!rn return;rn rn if(tvalue=="noreg")rn alert("请先进行注册!");rn var url = "/customer/customer_login.asp";rn var popup2 = window.open(url,"custlogin");rn return;rn rnrn alert("已经放入'"+tvalue+"'的暂存架,您可以到我的帐户中查看! ");rn //window.location.reload();rn return;rnrnrn
一个函数中如何返回多个值
在NET 中可以根据一个函数返回多个值,如下:除了本身的return 之外,还可以从ref ,out 得到参数改变后的值.不知道java 里面是如何做到的.rnprivate boolean GetFlowData(ref string param1,ref string param2)rnrn boolean isExist = false;rn ............rn return isExist ;rnrn 或者private boolean GetFlowData(out string param1,out string param2)也一样.rn
如何返回一个HttpRequest的值
如现在有个地址rn$apd="http://192.168.1.1/t.php?user=admin&pass=admin";rn$res = Utility::HttpRequest($api);rnreturn trim(strval($res))=='+OK' ? true : strval($res);rnrnrnt.php会根据参数里的user pass去判断,如果正确,就返回+OKrn但是现在没有值输出,怎么办?
如何返回一个指针值
如果不传入参数而直接返回一个在函数内部申明的指针,则函数结束以后结果很可能出错。那么有没有办法不传入参数而返回一个指针值呢?在Windows中CreateWindowEx成功以后的返回值代表了一个窗口,应该是一个地址吧。难道它是在系统保护内存区域分配的一个区域?rn我们如果要使用函数得到一个指针,非得在外面定义好再传地址进去?请教高手……
WebView中如何返回一个超链接的值?
android开发在WebView中如何返回一个超链接的值?知道的朋友帮忙解答一下,谢谢
我想从另外一个服务器去一个值返回,如何让它修改一个JavaScript值。
服务器端GETMAX.PHPrnrn[code=PHP]rnrn[/code]rn或者rn[code=PHP]rnmax=5;";rn?>rn[/code]rnrn客户端:rn[code=JScript]rnvar max=2;rn[/code]rnrn如何将客户端的max改成5?rn
关于JOptionPane,JDialog,JFrame移动问题.
我一个项目里有很多的JOptionPane,JDialog,JFrame.rn但是能不能不让它动.或者说不让它跑到屏幕可视范围之外.rn都不能有一点跑出当前屏幕.因为机子会连着好几个屏幕.不能让它们跑到其他屏幕上.rn所以我考虑一种是不让它出去最好,如果没办法,就只能让它们不能动了.rn请问是否有解决办法?
一个关于嵌套调用自定义JDialog的问题
我自己实现了一个JDialog类,在主窗口中调用,然后在这个JDialog中我又要调用另一个自己实现的JDialog类,最上面的这个JDialog就用不了了,为什么?怎么解决???????????rn急!!!!!!!!!!!rn哪位大侠指教一下???????????????
如何获取自定义服务器控件中的一个值..
web 页中调用一个服务器控件(没有打成dll, ascx直接引用的)rn 比始服务器控件中有一个 TextBox1 在rn web 页中如获取 textbox1 的值......
关于JOptionPane的一个问题?
我有一个警告对话框:rn Object[] options = "OK", "CANCEL" ;rn JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); rn现在的问题是如何让当用户点击"OK" 或 "CANCEL"分别执行不同的功能呢?就是说怎样对用户的选择进行判断啊?
一个applet中JDialog的问题
我在第一次访问applet时,点出对话框一切正常,但是我返回第二次点击链接访问applet时,主frame是正常的,但是点出对话框,发现对话框的任何按钮都没有用了,画面正常,但是点击都没有反应,不知道那位遇到过这种情况,头都大了!
比较全面的JDialog 和 JOptionPane的demo
比较全面的JDialog 和 JOptionPane的demo.
如何定义一个函数,让它返回多个值。
如何定义一个函数,让它返回多个值。
如何定义一个函数,让它返回多个值
如何定义一个函数,让它返回多个值
一个关于JOptionPane的问题???
我用JOptionPane.showInputDialog做了2个输入框rn我从在1框中输入内容指向2框,那么我怎么从2框回到1框??
一个关于JOptionPane的问题
大家知道int i = JOptionPane.showConfirmDialog(...)将返回用户点击的按钮所对应的值,但是今天我写了一个JOptionPane类,产生了一个对象,可不知道怎么返回用户点击的按钮对应值了,就如同上面的irn代码:rnJOptionPane myJOptionPane = new JOptionPane("发生错误,没有连接上服务器(原因:网络故障或服务器未提供服务)",JOptionPane.ERROR_MESSAGE,JOptionPane.YES_NO_OPTION,null,optionMessage);rn JDialog jDialog = myJOptionPane.createDialog(null,"提示");rn jDialog.show();rn如何返回jDialog上用户点击的按钮所对应的int值,就如上面的int i值
一个静态方法能够将另一个静态方法作为参数吗?
我在[url=http://book.douban.com/subject/19952400/][/url]这本书里看到说不行rn但是rn[code=java]rnpublic class Test1 rn public static void main(String[] args) rn A.abc(A.xyz());rn rnrnclass Arn public static void abc(int x)rn System.out.println(x);rn rn public static int xyz()rn return 1;rn rnrn[/code]rn以上代码可以编译运行rn书上是错的吗?
showMessageDialog 中 如何 载入 图片?
showMessageDialog 中 如何 载入 图片?
一个函数如何返回多个值,或者返回一个集合
一个函数,需要返回一个dateset,一个string, 一个intrn我知道用out,或者ref可以实现这个功能rnrn但是这个不好扩展,如果要返回5个以上的时候,不得写一堆参数啊rnrn我想返回一个数组,但是数组都要同一个类型的rnrn该怎么做呢?只返回一个数组,把要返回的都扔进数组里rn
javafx如何让一个自定义软键盘的值返回?
版主如果这个帖子分类放错了话,麻烦您帮忙转移分类下,我实在不知道该放那了rnrnrnrnrn需求是这样的,页面loginPage上有2个输入框,当我点击一个输入框的时候,显示我自己做的javafx软键盘(之前已经定义在loginPage中,只是不显示),这个软键盘上有输入框(注意是软键盘的输入框,不是页面的),当用鼠标点击软键盘上的enter按钮的时候,需要把软键盘输入框的值返回到页面上rnrn可问题是,我不知返回这个值给谁,因为谁让软键盘显示出来,在软键盘自己内部是不知道的或者我不知道方法,大哥们能提供下么?如果能得到谁让他显示,那就简单多了rnrn我也尝试在loginPage那2个输入框上bind(绑定)软键盘输入框的值,但发现,一点软键盘,2个输入框的值都被改变,后来想当loginPage的输入框获得焦点的时候绑定值,但发现效果一样,因为好像第一个输入框绑定了,在点击第二个输入框输入,第一个输入框的值还绑着呢,根本没解除,javafx好像不支持解除绑定,各位有方法解决么?rn
问一个JDialog的问题
这是为什么rnimport javax.swing.*;rnimport java.awt.*;rnimport java.awt.event.*;rnrnclass MyDialog extends JDialog rn private JLabel label = new JLabel("请输入姓名:");rn private JTextField textField = new JTextField(10);rn private JButton button = new JButton("OK");rn rn public MyDialog(JFrame parent) rn super(parent, "提示", true);rn Container contentPane = getContentPane();rn contentPane.setLayout(new FlowLayout());rn contentPane.add(label);rn contentPane.add(textField);rn rn button.addActionListener(new ActionListener() rn public void actionPerformed(ActionEvent e) rn dispose();rn rn );rn contentPane.add(button);rn pack();rn rn rn rn public String getText() return textField.getText();rnrnrnpublic class DialogDemo extends JFrame rn private JButton button = new JButton("提交");rn private MyDialog dialog = new MyDialog(this);rn private TextField textField1 = new TextField(10);rn rn public DialogDemo (String title) rn super(title);rn textField1.setEditable(false);rn button.addActionListener(new ActionListener() rn public void actionPerformed(ActionEvent e) rn dialog.setVisible(true);rn [color=#FF0000]textField1.setText(dialog.getText());[/color]rn rn );rn rn Container contentPane = getContentPane();rn contentPane.setLayout(new FlowLayout());rn contentPane.add(button);rn contentPane.add(textField1);rn setSize(500,300);rn setVisible(true);rn setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);rn rn rn rn public static void main(String args[]) rn new DialogDemo("DialogDemo");rn rnrnrntextField1.setText(dialog.getText());作为actionPerformed(ActionEvent e)的内容被添加到DialogDemo的button中,而MyDialog的button里添加的rnrnActionListener(new ActionListener() )中的actionPerformed(ActionEvent e) 里只有一个释放dispose()方法,为什么把MyDialog关闭或按MyDialog的rnrnbutton却可以将信息显示到DialogDemo的textField1中
如何blocking一个函数,不让它返回?
初学javascript,在设计chrome插件时遇到一个问题,找了一些资料,也尝试过一些方法,目前不知道如何继续,问题描述如下:rnrn为某个事件添加一个listener, 如何将listener中的回调函数blocking住不让返回,直到点击某个按钮(比如forward按钮),回调函数才会返回,试了几种方法:rnrn1.rnwhile(1)rnrnif(forward == 1)rnbreak;rnrnrn结果就是浏览器直接卡死,没有任何悬念。rn2. rnsetInterval(function()rnif(go_forward) rngo_forward = 0;rnreturn requestHeaders: details.requestHeaders;rnrn, 0);rn虽然指定了时间间隔为0,但是函数依然返回了,没有任何作用。rnrnjavascript或者其他的javascript库有没有提供这种blocking的支持?rn如果没有现成的支持,如何自己用javascript写一个模拟这种bloking的函数?比如模拟alert或者confirm弹出框,如果不点击【确定】,那么就会阻塞在当前的指令上,但是又不会卡死?这种情况改如何实现?rnrnrn
返回一个字段的值|*|*|*|*|*|*|
SELECT USERID FROM USERINFO WHERE USERNAME="'23' and pwd='321'rn在JAVA中执行这条SQL语句,如何获取USERID? 必须返回一个ResultSet吗?
关于JDialog的一个问题
在创建JDialog时 有这么一个问题不太理解 举例:public JDialog(new MyFrame(),"我的第一个JDialog",true)rn这里new MyFrame()代表JDialog指定的窗体;“我的第一个JDialog”代表标题 而true代表什么意思呢?不理解
jdialog的一个简单问题
在jdialog上方了一个panelrn这个panel上有一个按钮rn当这个按钮按下时关闭这个jdialog。rn这个jdialog是模式显示出来的。
一个简单的对话框JDialog
一个简单的对话框JDialogimport java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax
怎么定义一个静态方法返回类自身?
类似这种感觉:rnrnclass User rn public static function test() return self; rn public static function do() rnrnrnUser::test()::do();
自定义JFrame/JDialog标题栏
最近一直在做Flex,晚上看看世界杯,一些比赛真的很没劲 so,就想写写Swing,想起以前有人问过如何替换JFrame或者JDialog的标题栏,就动手写了写  提供了TitleFrame和TitleDialog两个顶层组件, 主要功能: 1、自定义标题栏 2、可以通过鼠标拖拽调整组件大小(可关闭resize功能) 3、设置图标和显示文字(文字可居中) 4、自定义右键菜单。  解决了以下问题:...
在线等.....如何返回一个自定义的FaultCode?..............
axis,resin,jdk1.4环境。rn判断某个布尔值,如果为false就让webservice返回一个FaultCode。rn能否贴出部分代码(java代码和axis的server-config.wsdd)作为参考,谢谢。rnrn在线等。。。。
用JOptionPane生成一个对话框,
生成之后,要点击确定按钮才会关闭此信息提示对话框,rn我想在想让它在5秒之后自动关闭该怎么写下面的代码呢?
如何使用showmessagedialog()?
static void showMessageDialog(Component parentComponent, Object message) rn 调出标题为 "Message" 的信息消息对话框。 rnstatic void showMessageDialog(Component parentComponent, Object message, String title, int messageType) rn 调出对话框,它显示使用由 messageType 参数确定的默认图标的 message。 rnrn这里我不太明白Componet 是应该怎么表示.是super,还是this???rnObject 是什么意思?怎么调用??rn谢谢了
如何写能够返回一个类似BOOL型值的存储过程?
比如说:我要在某个表中查找一个值,如果找到,就返回‘Y’,否则就返回‘N’,如何写这样的存储过程
弹出一个窗口,如何返回子窗口的值?
子窗口关闭之前,要返回一字符串给父窗口,不想通过调用父窗口的方法。rn是用window.returnValue吗?请解答。rn谢谢。
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview