I have swing app where in main window, thrue JFileChoser i get absoluthe filepath.
public Form() {
setVisible(true);
setContentPane(content);
setSize(400,500);
setTitle("Deklaracja pacjenta");
setResizable(false);
Output.setLineWrap(true);
Output.setFont(new Font("Serif",Font.PLAIN,20));
Output.setEditable(false);
msgScroller = new JScrollPane();
msgScroller.setViewportView(Output);
msg.add(msgScroller);
browseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String filename = File.separator;
browser = new JFileChooser(new File(filename));
browser.setPreferredSize(new Dimension(600,400));
FileNameExtensionFilter ff = new FileNameExtensionFilter("xml files (*.xml)", "xml");
browser.addChoosableFileFilter(ff);
browser.setFileFilter(ff);
int zwrot = browser.showOpenDialog(content);
if (zwrot == JFileChooser.APPROVE_OPTION ){
selFile = browser.getSelectedFile();
browsePath.setText(String.valueOf(selFile));
browsePath.setEditable(false);}
else
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }});
Basen on this path then i parse xml file.
I would like to work on the same path in another window but i dont know how to do this. For now the other windows using file which i add to project director, called "deklaracja"
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("deklaracja");
I would like to use the file which user chose in JFileChoser in previous window insted of "deklaracja". I tried to pass variable "selFile" but i doesnt work. In second class i pass variable like this:
public void xmladder() throws ParserConfigurationException, TransformerException, SAXException, IOException {Form form = new Form();
String path = form.selFile;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(path);
That way make another issue, it build next, the same swing window.
Error logs:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: URI cannot be null
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:173)
at com.company.NDoctor.xmladder(NDoctor.java:76)
at com.company.NDoctor$2.actionPerformed(NDoctor.java:54)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Do you have any idea how to do this. I would be grateful for any advice ;)