Диалоговое окно "Открыть файл..." не закрывается
Привет, я новичок в языке Java. Я использовал Eclipse в качестве инструмента разработки. У меня есть код, чтобы открыть диалоговое окно файла, и он сделал, но у меня есть две проблемы:
- Когда я выбираю файл и нажимаю кнопку "Открыть" в диалоговом окне, диалоговое окно появляется снова, а не закрывается.
- Иногда текст в текстовом поле имени файла в диалоге неясен и / или текст на кнопке исчезает. Если я увеличу диалоговое окно, текст будет отображаться полностью.
Вот мой код:
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;
}
}
Как я могу решить проблемы? Заранее спасибо.
2 ответа
Решение
Ваше диалоговое окно появляется снова, потому что вы вызываете метод 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
}
Ты звонишь fileChooser.showOpenDialog(this)
несколько раз, и именно поэтому ваша программа ведет себя так, как она себя ведет. Вместо вызова fileChooser.showOpenDialog(this)
один раз и сохраните его значение в переменной.
На самом деле, вам даже не нужен этот пустой блок:
if (fileChooser.showOpenDialog(this) ==
JFileChooser.CANCEL_OPTION ) {
}
Так что избавься от этого!