【问题标题】:Passing from Jdialog to Jframe从 Jdialog 传递到 Jframe
【发布时间】:2014-04-19 12:36:33
【问题描述】:

我创建了一个 JDialog,并将我的 JFrame 传递给它。

for (int i = 0; i < digiProdRadioBtns.length; i++) {
        if (digiProdCheck[i].isSelected()) {

            ProdDialog a = new ProdDialog(digiPopup[i], frame, digiProductList.getProduct(counter), digiProductList);
        } 

然后我尝试从 JDialog 中访问 JFrame 的方法,但不能。

public class ProdDialog extends JDialog {

cdDialog = new JDialog(jFrame, true);



 this.jframe = jFrame;
 jframe.newEmployee();

我已经读到我正在尝试做的事情是可能的,有什么理由不适合我吗?

【问题讨论】:

  • 请贴出完整编译后的代码。

标签: java swing jframe jdialog


【解决方案1】:

JFrameJDialogtop-level containers 通常用作视图组件。通常,除了相对于其父框架定位对话框之外,它们不进行通信。相反,请安排您的视图使用PropertyChangeEvent 进行通信,如example 所示。拥有一个包含名义上的 List&lt;Product&gt; 的单独模型将允许您使用讨论过的模式 here

【讨论】:

    【解决方案2】:

    我在这里遗漏了很多上下文,是什么不适合你?

    我假设您在 jframe.newEmployee(); 命令上看到一个错误,指出该方法未定义,如果是这样,那么这是合理的,因为 JFrame 类没有该方法,如果您的类是类 ProdJFrame 并且它扩展JFrame 并且有那个方法,那你需要做((ProdJFrame)jframe).newEmployee();

    【讨论】:

    • 是的我应该多解释一下,所以设置的其实是一个叫HomeScreen的JFrame,我在这个JFrame上实现了卡片布局,所以我要访问的方法的Jpanel叫做DigiProdPanel,这个面板创建了 JDialog,所以也许它是我需要传递给 JDialog 的面板“DigiProdPanel”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多