java - "Open file..."对话框无法关闭

标签 java dialog jfilechooser

嗨,我是 Java 语言新手。我使用 Eclipse 作为我的开发工具。我有打开文件对话框的代码,它确实打开了,但我有两个问题:

  1. 当我选择文件并单击对话框中的“打开”按钮时,该对话框再次出现而不是关闭。
  2. 有时对话框中文件名文本框中的文本不清楚和/或按钮上的文本消失。如果我放大对话框,文本将完全显示。

这是我的代码:

package PDFAnnotationPackage;

import java.awt.event.*;
import javax.swing.*;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.*;
import java.io.*;

public class MainForm extends JFrame implements ActionListener  {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    new MainForm();
}

public MainForm(){
    super("Example");
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });

    // Name the JMenu & Add Items
    JMenu menu = new JMenu("File");
    menu.add(makeMenuItem("Open"));
    menu.add(makeMenuItem("Save"));
    menu.add(makeMenuItem("Quit"));

    // Add JMenu bar
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(menu);
    setJMenuBar(menuBar);
    setSize(300, 300);
    setLocation(200, 200);
    setVisible(true);
}

public void actionPerformed(ActionEvent e) {

    // Menu item actions
    String command = e.getActionCommand();

    if (command.equals("Quit")) {
        System.exit(0);
    } else if (command.equals("Open")) {
        // Open menu item action
        JFileChooser fileChooser = new JFileChooser();           
        if (fileChooser.showOpenDialog(MainForm.this) == JFileChooser.APPROVE_OPTION) {
          File file = fileChooser.getSelectedFile();
          System.out.println("Open menu item clicked");
          // load from file
        }
        if (fileChooser.showOpenDialog(this) == JFileChooser.CANCEL_OPTION ) {

            }


        } else if (command.equals("Save")) {
        // Save menu item action
        System.out.println("Save menu item clicked");
        }
    }

    private JMenuItem makeMenuItem(String name) {
        JMenuItem m = new JMenuItem(name);
        m.addActionListener(this);
        return m;
    }
}

如何解决这些问题?提前致谢。

最佳答案

您的对话框再次出现,因为您调用了方法 showOpenDialog 两次。试试这个

if (command.equals("Quit")) {
    // Close application
} else if (command.equals("Open")) {
    JFileChooser fileChooser = new JFileChooser(); 
    int returnVal = fileChooser.showOpenDialog(parent);

    if (returnVal ==  FileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        // Load file
    } else if (returnVal == JFileChooser.CANCEL_OPTION ) {
        // Do something else
    } 
} else if (command.equals("Save")) {
    // Save menu item action
}

关于java - "Open file..."对话框无法关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467525/

相关文章:

java - 有没有规范的方式在 GRPC 中进行登录

java - Android:自定义对话框的大小不准确

java - 在自定义的 JFileChooser 中,从 JComboBox 中选择一个执行该特定操作

java - 如何打开文件并查看它

java - 将对象传递给网络服务

java - 如何使用 cmake 和 UseJava 模块添加 MANIFEST 文件?

java - scala sortWith 不起作用

android - Android KitKat 上的对话框似乎被剪掉了

javascript - 在 Metro UI 中使用对话框

java - 当用户想在java中将文件保存在C盘根目录中时如何显示消息