Я работаю над еще одним проектом для работы. Для этого проекта я имею дело с файлами XML, в частности моя программа позволяет пользователю создавать XML-файл на основе нескольких параметров графического интерфейса и данных JTable. Одна из функций, которую я хотел бы добавить, - это возможность для пользователя открывать или просматривать созданный файл XML одним нажатием кнопки.Открыть файл в IE
В другой программе, которую я создал, пользователь смог создать текстовый файл с фиксированным форматом, известный как .ACH. Для этой программы пользователь мог открыть файл в блокноте, используя следующий код:
public void displayFileOptionEdited(){
int dialogResult = JOptionPane.showConfirmDialog(null, "Output file saved as "+Rewriter.location+ "\nWould you like to view the file?","Display Output",JOptionPane.YES_NO_OPTION);
if(dialogResult==JOptionPane.YES_OPTION){
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", Rewriter.location);
try {
pb.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Проблема с моей текущей программе, что файл XML просто тарабарщина при просмотре в блокноте. Единственный способ просмотра этого файла - открыть его в IE. (Это я знаю). Я действительно пробовал одно решение о создании JDialog, чтобы посмотреть файл, как это:
package view;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class XMLview extends JDialog {
private final JPanel contentPanel = new JPanel();
/**
* Create the dialog.
*/
public XMLview(File file) {
setBounds(100, 100, 555, 434);
this.setTitle("XML Viewer");
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new BorderLayout(0, 0));
{
JTextPane textPane = new JTextPane();
JScrollPane jsp = new JScrollPane(textPane);
Font font = new Font(Font.SANS_SERIF, 3,15);
textPane.setFont(font);
contentPanel.add(jsp);
try {
textPane.read(new FileReader(file), null);
} catch (IOException ex) {
System.out.println("problem accessing file"+file.getAbsolutePath());
}
}
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
}
}
}
Проблема с этим решением является то, что в то время как XML генерируется в JDialog он не сохраняет правильное форматирование. Вместо того, чтобы занимать пару сотен строк или около того, он вытаскивается на 3 строки. В XML есть более 60 тегов, поэтому проблема может быть проблемой - мне не очень нравится этот подход, поскольку я думаю, что это будет серьезная головная боль, чтобы понять.
Итак, мое окончательное решение - просто открыть файл в IE, когда произойдет какое-то действие. Итак, мы вернемся к моему предыдущему примеру открытия файла с помощью блокнота. Я понимаю, что вы не можете сделать это с помощью IE, потому что это не «системная» утилита, как блокнот. Вы бы (я предполагаю) должны дать прямой путь, который трудно с несколькими пользователями.
Вот что: пользователи этой программы запускают одну и ту же систему и имеют одинаковый формат файлов для своего ПК. Единственное отличие - это имя пользователя для своего каталога пользователей. Поэтому мне интересно, можно ли сообщить программе открыть файл в IE и как я буду делать это, чтобы он мог применяться ко всем пользователям даже с разными именами пользователей? Если кто-то знает, каким образом я бы очень хотел услышать это.
Точно так же я не могу опубликовать полный код из-за чувствительного характера содержимого файла XML. Я попытался найти другой XML, который мог бы проиллюстрировать тот же пример, но я не могу.
Чтобы подвести итог, если есть какая-то путаница - я просто хочу, чтобы пользователь мог нажать кнопку и программу, чтобы автоматически открыть файл в IE.
Я считаю, что вы можете ссылаться на IE, с 'новой ProcessBuilder ("старт", "Iexplore", Rewriter.location) .start()', где 'Rewriter.location 'содержит путь к вашему XML-файлу. –
На самом деле, 'new ProcessBuilder (« cmd »,«/C start iexplore your.xml »). Start();' –