我在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有以下构造函数和可运行的公共void Run():
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像我想要的那样工作:
- 我想让它与正确的属性可见。所以我需要在(…,…)构造函数中放一些东西…但是我不知道我该放什么。
- 我想给一个字符串id(其中包含id什么Jdialog需要打印正确的值)
任何建议都非常欢迎!
如果我需要提供更多我想要做的代码或信息,请告诉我,我将相应地做。
编辑masterTable。addMouseListener在公共void initComponents()中。新jdialog (inziengegevensselect)中的this给出以下错误:
- 不兼容类型<匿名ClickListener>不能转换为Frame匿名ClickListener>
新jdialog (inziengegevensselect)中的this给出以下错误:
incompatible types < anonymous ClickListener > cannot be converted to Frame
new InzienSelectieDialoog(this, true);
您已经在ClickListener
的上下文中创建了对话框。含义this
表示ClickListener
。要将this
更改为框架,需要在框架的类名前面加上前缀,如MyFrame.this
边注
我注意到你的对话框类有一个
main
方法。你不需要那个。您的应用程序应该只有一个main
方法,它在frame类中。去掉main
方法,添加窗口侦听器并将其设置为在构造函数中可见。我不知道你为什么要在对话框类的主方法中实例化对话框。它应该只需要从frame类中实例化。