java-如何将值从JDialog框返回到父JFrame?

我创建了一个模态对话框,上面带有一个自定义图形和一个JButton。 当我单击JButton时,对话框应该关闭并且应该返回一个值。

我在父JFrame中创建了一个名为setModalPiece的函数,该函数接收一个值并将其设置为本地JFrame变量。

问题是该功能从JDialog框不可见(即使JDialog框具有对父JFrame的引用)。

两个问题:1)是否有更好的方法将值从JDialog框返回到其父JFrame?

2)为什么不能使用对传递给JDialog的JFrame的引用来访问我的JFrame函数setModalPiece?

6个解决方案

108 votes

我通常这样做:

Dialog dlg = new Dialog(this, ...);

Value result = dlg.showDialog();

Dialog.showDialog()函数如下所示:

ReturnValue showDialog() {

setVisible(true);

return result;

}

由于在JDialog上将可见性设置为true是模态操作,因此“确定”按钮可以将实例变量(showDialog())设置为对话框的选定结果(如果取消则为null)。 使用“确定/取消”按钮方法处理后,请执行以下操作:

setVisible(false);

dispose();

将控制权返回给showDialog()函数。

Jonathan answered 2020-08-01T21:00:25Z

23 votes

您应该通过向自定义JFrame添加自定义方法CustomDialog来执行相反的操作。

这样,您可以从2992684038688867367328询问对话框的值,而不是通过在JFrame本身上调用某些内容来设置对话框。

如果您在此处查看有关对话框的Oracle教程,它将指出

如果要设计自定义对话框,则需要设计对话框的API,以便可以向对话框查询用户的选择。 例如,CustomDialog有一个getValidatedText方法,该方法返回用户输入的文本。

(您可以找到CustomDialog的源,以了解他们认为您将如何设计自定义对话框)

Jack answered 2020-08-01T20:59:52Z

4 votes

我不知道我是否可以用一种很酷的方式来解释我的方法...假设我需要一个要从用户那里获取该信息的JDialog的productPrice和amount,我需要从JFrame进行调用。

在JDialog中将产品价格和金额声明为公共的非静态全局变量。

public float productPrice;

public int amount;

*这在对话框的类的全局范围内。

在JDialog构造函数中添加这些行以确保模态

super((java.awt.Frame) null, true);

setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);

*这属于对话框的类构造函数

假设您调用此类操作时,您的JDialog的类名称为“ MyJDialog”

MyJDialog question = new MyJDialog();

MyJDialog.setVisible(true);

// Application thread will stop here until MyJDialog calls dispose();

// this is an effect of modality

//

// When question calls for dispose(), it will leave the screen,

// but its global values will still be accessible.

float myTotalCostVar = question.productPrice * question.ammount;

// this is acceptable.

// You can also create public getter function inside the JDialog class,

// its safer and its a good practice.

*这可以在JFrame中的任何函数中使用,并将调用JDialog获取信息。

Felype answered 2020-08-01T21:01:12Z

0 votes

当您将任何值传递给JDialog到JDialog时,请在每次调用时在jframe中创建参数化构造函数或jdialog。例如 参数化的构造函数如:

public EditProduct(java.awt.Frame parent, boolean modal, int no) {

//int no is number of product want to edit.

//Now we can use this pid in JDialog and perform whatever you want.

}

当您要将值从JDialog传递到JFrame时,请使用set和get方法创建一个bean类,并使用vector值,并在jframe中获取这些值。更多信息

Rajshri answered 2020-08-01T21:01:36Z

0 votes

这是我通常的做法。 我不确定,这就是我创建该帖子的原因:

从JDialog返回值; dispose(),setVisible(false)-示例

guitar_freak answered 2020-08-01T21:02:00Z

0 votes

向您的构造函数添加接口?

public class UploadConfimation extends JDialog {

private final JPanel contentPanel = new JPanel();

public interface GetDialogResponse{

void GetResponse(boolean response);

}

/**

* Create the dialog.

*/

public UploadConfimation(String title, String message, GetDialogResponse result) {

setBounds(100, 100, 450, 300);

setTitle(title);

getContentPane().setLayout(new BorderLayout());

contentPanel.setLayout(new FlowLayout());

contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));

getContentPane().add(contentPanel, BorderLayout.CENTER);

{

JLabel lblMessage = new JLabel(message);

contentPanel.add(lblMessage);

}

{

JPanel buttonPane = new JPanel();

buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER));

getContentPane().add(buttonPane, BorderLayout.SOUTH);

{

JButton okButton = new JButton("YES");

okButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

result.GetResponse(true);

dispose();

}

});

buttonPane.add(okButton);

getRootPane().setDefaultButton(okButton);

}

{

JButton cancelButton = new JButton("NO");

cancelButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

result.GetResponse(false);

dispose();

}

});

buttonPane.add(cancelButton);

}

}

}

}

Wil_Ryan answered 2020-08-01T21:02:24Z

java jframe 对话框_java-如何将值从JDialog框返回到父JFrame?相关推荐

  1. java父子对话框_java – 如何将JFrame设置为JDialog的父级

    我无法将框架设置为对话框的所有者.通常当我扩展JDialog类来创建对话框时,我使用超级(框架)来指定对话框的所有者,以便当您按Alt选项卡时,它们都不会脱节.但是当我使用新的JDialog对话框= ...

  2. java 透明对话框_java实现jframe透明窗体示例

    java实现jframe透明窗体示例 复制代码 代码如下: import javax.swing.JFrame; public class TansluFrame extends JFrame { p ...

  3. java swing对话框_Java开发笔记(一百三十五)Swing的文件对话框

    除了常规的提示对话框,还有一种对话框也很常见,它叫做文件对话框.文件对话框又分为两小类:打开文件的对话框.保存文件的对话框,但在Swing中它们都用类型JFileChooser来表达.下面是JFile ...

  4. java swing对话框_java Swing中弹出对话框的几种方式

    通过导入JOptionPane类来实现弹出对话框的功能 import javax.swing.JOptionPane; 大体分为四类:ConfirmDialog //确认对话框,由用户来确认(比如按& ...

  5. java bigint范围_Java Integer取值范围

    package com.test; public class Test { public static void main(String []args) { Integer a = 100;//此处若 ...

  6. java 自定义对话框_Java经典实例:用户自定义对话框

    b**f评论了:感谢大佬,解决了我的... p**a向课程作业中提交了代码 y**4向课程作业中提交了代码 p**a添加了笔记:每一个修改Strin... t**e在课程作业中回复了老师:为什么提交作 ...

  7. java android对话框_java - 防止Android活动对话框关闭外部触摸

    18个解决方案 327 votes 要防止对话框在按下后退键时被解除,请使用此选项 dialog.setCancelable(false); 并且为防止对话框在外部触摸时被解雇,请使用此功能 dial ...

  8. java jcombobox选择_java – 如何按值设置选定的索引JComboBox

    我想在JComboBox中将所选索引设置为不是索引的值.怎么做?例 public class ComboItem { private String value; private String labe ...

  9. java getparameter赋值_java getparameter获取值的问题

    这是Html表单部分RegistrationUsername: 这是Html表单部分 Registration Username: Password: Confirm: Servlet的代码是这样 S ...

最新文章

  1. usaco Palindromic Squares
  2. c++入门之运算符重载
  3. CoreData并发操作模式简介
  4. react设置static defaultProps报错问题解决
  5. 疑似锤子新机谍照曝光,后置“拐角”四摄,前CEO犀利点评...
  6. 对比学习视角:重新审视推荐系统的召回粗排模型
  7. oracle12c ora01017,ORACLE 12C 之 ORA-01017
  8. WDS功能及中继与桥接模式的区别.
  9. 阿里云叔度:一场技术人的自我修行
  10. Android中跳转到系统设置界面
  11. mysql怎么打开db文件_DB文件扩展名 - 什么是.db以及如何打开? - ReviverSoft
  12. 如何优化网站才能让网站打开速度更快
  13. TS是什么?特性是什么?与JS的区别?使用ts的好处?
  14. 阅读记录-统计你的每一次读书和笔‪记
  15. Comparing the Effects of DNS, DoT, and DoH
  16. 【C++】智力题总结
  17. EXCEL之函数调用
  18. 小白学Java基础案例(一)
  19. 什么是延时电路?6种延时电路原理讲解
  20. QT编译liblzma

热门文章

  1. Web 组件势必取代前端?
  2. 44 年前的今天,改变世界的 TA 诞生了!
  3. 阿里布局物联网!开源操作系统 AliOS Things 喜提 1 亿芯片出货量
  4. 今日头条把微信按在地上摩擦
  5. 佛系张小龙和他的微信帝国 | 畅言
  6. 如何在 GitHub 上大显身手?
  7. 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
  8. 四面轻松突围!我是如何斩获高级运维开发一职的?
  9. 李彦宏:我从未说过百度“All in AI”,这得怪陆奇
  10. mt6735通用recovery_MTK65XX通用线刷刷机工具驱动-MTK65xx刷机工具驱动及教程下载最新免费版-西西软件下载...