Следуя моему предыдущему сообщению по этой ссылке У меня другая проблема.
Учитывая следующий код:
public class GuiHandler extends javax.swing.JFrame {
// GuiHandler is the class that runs the entire project
// here are two private fields that I use in the code , I have more but they
// irrelevant for the moment
final JFileChooser openFiles = new JFileChooser();
private DataParser xmlParser = new DataParser();
// later on I have this method - XMLfilesBrowserActionPerformed
private void XMLfilesBrowserActionPerformed(java.awt.event.ActionEvent evt) {
//setting the file chooser
openFiles.setFileSelectionMode(JFileChooser.FILES_ONLY);
openFiles.setAcceptAllFileFilterUsed(false);
if (openFiles.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
//getting the selected file
File selected = openFiles.getSelectedFile();
// from here I parse the XML file that I opened with JFileChooser
// with the help of one of my methods getNodeListFromFile
xmlParser.getNodeListFromFile(selected);
Проблема в том, что я не могу использовать объявление main
, которое было предложено ранее в приведенной выше ссылке (и я должен добавить, что это было довольно приятно:)), опубликованный код:
public class NativeFileChooser {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null);
}
});
}
}
А использование main
очень затрудняет дальнейшую работу с файлом XML
с помощью моего метода getNodeListFromFile
.
Что мне нужно, так это использовать «простой» браузер JFileChooser
, а затем использовать выбранный файл, не вовлекая в это main
.
Я был бы признателен, если бы кто-нибудь объяснил, как я могу использовать приведенный выше код (или что-то еще) с моим кодом.
С наилучшими пожеланиями
ИЗМЕНИТЬ:
Если я использую такой код ;
public void launchFileChooser() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setAcceptAllFileFilterUsed(false);
if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
newFile = jfc.getSelectedFile();
}
});
}
здесь newFile
является элементом данных.
затем после открытия файла происходит сбой кода.
Если я сделаю jfc
элементом данных, код откроет обычный браузер. Любая идея, как это исправить?
Спасибо
JFrame
, вместо этого код должен просто сохранять экземпляр одного. 2) Кадр в коде, показанном в принятом ответе, будет Metal PLAF (он создается до изменения PLAF), что может выглядеть странно в вашем приложении. 3) Каков вариант использования здесь? Кажется, вы хотите, чтобыJFileChooser
отображалось перед основным графическим интерфейсом, и чтобы основной графический интерфейс никогда не должен был открывать второй XML. Это правильно? 4) Чтобы быстрее получить помощь, опубликуйте SSCCE (как я разместил и как упоминает akf). - person Andrew Thompson   schedule 06.06.2012