我想使用saveDialog初始化一个帧,但是当使用它时chooser.showSaveDialog(this);我得到一个错误:
public void initialize() {
JFrame frame = new JFrame();
Container content = frame.getContentPane();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Menu
JMenu menu = new JMenu("File");
menu.add(new AbstractAction("Make Image") {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
int option = chooser.showSaveDialog(this);
if(option == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
writeJPEGImage(file);
}
}});
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
JMenuBar menuBar = new JMenuBar();
menuBar.add(menu);
frame.setJMenuBar(menuBar);
content.add(tree);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
错误:
JFileChooser类型中的方法showSaveDialog(Component)不适用于参数()
我知道这个方法通常会得到一个Component,但是我的类中没有,因为我在这个方法中加载它.
任何建议如何解决?
我感谢你的回答!
PS.: new Test()确实有效,但我必须给它当前的组件!
小智 5
您可以使用已创建的帧变量作为参数或内容变量.
int option = chooser.showSaveDialog(frame);
Run Code Online (Sandbox Code Playgroud)
要么
int option = chooser.showSaveDialog(content);
Run Code Online (Sandbox Code Playgroud)
此外,您必须将它们定义为final,以便能够从您的匿名类访问它们:
final JFrame frame = new JFrame();
Run Code Online (Sandbox Code Playgroud)
要么
final Container content = frame.getContentPane();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |