我需要为JDialog提供什么样的变量才能显示它

时间:2014-05-25 11:50:06

标签: java swing netbeans jdialog

我在NetBeans上使用设计模式来创建多个JFrame。我目前正在尝试创建一个JDialog,但我不知道我必须给它什么样的变量。

因为Design-mode为我制作了代码,所以我不能只是编辑它以使其工作。在生成的masterTable代码中获取doubleClick事件已经非常麻烦了。

这是我正在尝试运行的代码。 public void DoubleClick是Jdialog的新实例。

masterTable.addMouseListener( new ClickListener() {
        public void singleClick (MouseEvent e) {
            System.out.println("single");
            JTable target = (JTable) e.getSource();
            int row = target.getSelectedRow();
            int col = 0;
            Object data = (Object) target.getValueAt(row, col);
            String id = data.toString();
            System.out.println("Er is geklikt op de rij met ID nummer: " + data);
            try {
                GetSelectedData(id);
            } catch (SQLException ex) {
                Logger.getLogger(InzienDienstgegevensForm.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                DisplayPaymentInfo(id);
            } catch (SQLException ex) {
                Logger.getLogger(InzienDienstgegevensForm.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
        public void doubleClick (MouseEvent e){
            System.out.println("double");
            JTable target = (JTable) e.getSource();
            int row = target.getSelectedRow();
            int col = 0;
            Object data = (Object) target.getValueAt(row, col);
            String id = data.toString();
            System.out.println("Er is geklikt op de rij met ID nummer: " + data);
            InzienSelectieDialoog dialoog = new InzienSelectieDialoog(this, true);
        }
    }); 

我的JDIALOG在public void Run()中有以下构造函数和runnable:

public InzienSelectieDialoog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
}

public static void main(String args[]) {

    /* Create and display the dialog */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            InzienSelectieDialoog dialog = new InzienSelectieDialoog(new     javax.swing.JFrame(), true);
            dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                @Override
                public void windowClosing(java.awt.event.WindowEvent e) {
                    System.exit(0);
                }
            });
            dialog.setVisible(true);
        }
    });
}

有两件事我想调整,以便让我的JDialog像我想要的那样工作:

  • 我希望使用正确的属性使其可见。所以我需要在(...,...)构造函数中添加一些内容......但我不知道我必须放在那里。
  • 我想给一个String id(其中包含Jdialog打印正确值所需的ID)

非常欢迎任何建议!

如果我需要提供更多我想做的代码或信息,请问我,我会这样做。

编辑:masterTable.addMouseListener位于public void initComponents()中。新的JDialoog(InzienGegevensSelectie)中的这个给出了以下错误:

  • 不兼容的类型<匿名ClickListener>无法转换为Frame

1 个答案:

答案 0 :(得分:1)

  

新的JDialoog(InzienGegevensSelectie)中出现以下错误:

     

incompatible types < anonymous ClickListener > cannot be converted to Frame

new InzienSelectieDialoog(this, true);

您已在ClickListener的上下文中创建了对话框。含义this指的是ClickListener。要将this更改为框架,您需要为框架的类名添加前缀,例如MyFrame.this


旁注

  • 我注意到你的对话框类有一个main方法。你不需要那个。您的应用程序应该只有一个main方法,它位于框架类中。摆脱main方法,添加窗口监听器并在构造函数中将其设置为可见。

  • 我不知道你为什么试图在对话框类的main方法中实例化对话框。它应该只需要从帧类实例化。