这不是我的程序,但是没有人遇到这个问题,我是第一个,因此原始开发人员已经尝试帮助我,但是由于该程序对其他所有人都可以用而无法帮助。 / p>
我需要单击一个按钮,该按钮应该显示一个弹出窗口以选择文件(JFileChooser),但在每个pc上都可以正常运行,但是在我看来却没有,注意发生,没有弹出窗口,只有调试器上的错误。
程序有一个调试器,即创建错误日志的代码:
return (T)clazz.getConstructor(new Class[0]).newInstance(new Object[0]);
} catch (ReflectiveOperationException e) {
e.printStackTrace();
throw new RuntimeException("No default constructor found for " + clazz.getName());
}
}
/ \ 这就是创建日志的原因。
这是调试日志中描述的问题: /
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: `
No default constructor found for com.github.manolo8.darkbot.gui.tree.components.JFileOpener
我已经安装了正确的sdk和运行时,每个人都在使用它,并且没有问题。
这是文件内的代码:“ JFileOpener”
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
public class JFileOpener extends JLabel implements OptionEditor {
private final JFileChooser fc = new JFileChooser(new File("."))
{
protected JDialog createDialog(Component parent) throws HeadlessException {
JDialog dialog = super.createDialog(parent);
dialog.setAlwaysOnTop(true);
return dialog;
}
};
public JComponent getComponent() { return this; }
public void edit(ConfigField field) {
setText(Strings.fileName((String)field.get()));
SwingUtilities.invokeLater(() -> {
if (this.fc.showOpenDialog(null) != 0)
return; field.set(this.fc.getSelectedFile().getAbsolutePath());
setText(Strings.fileName((String)field.get()));
});
}
}
答案 0 :(得分:0)
您是否尝试为JFileOpener
类添加默认构造函数?只是看看发生了什么?
public class JFileOpener extends JLabel implements OptionEditor {
public JFileOpener() { //Here
super();
}
private final JFileChooser fc = new JFileChooser(new File(".")) {
@Override
protected JDialog createDialog(Component parent) throws HeadlessException {
JDialog dialog = super.createDialog(parent);
dialog.setAlwaysOnTop(true);
return dialog;
}
};
public JComponent getComponent() {
return this;
}
public void edit(ConfigField field) {
setText(Strings.fileName((String) field.get()));
SwingUtilities.invokeLater(() -> {
if (this.fc.showOpenDialog(null) != 0)
return;
field.set(this.fc.getSelectedFile().getAbsolutePath());
setText(Strings.fileName((String) field.get()));
});
}
}