0

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 ;)

snowflake
  • 73
  • 1
  • 8
  • 1
    Welcome to Stack Overflow, please take the [tour] and learn [ask] a good question which should include a [mcve], once you have the MCVE come back and [edit] your question and include it here. So we can copy-paste it and see your issue :) – Frakcool Sep 27 '16 at 16:52
  • 1
    *"I tried to pass variable `selFile` but it doesn't work."* Why didn't it work? What was the exact compiler or exception stack trace? These are vital details to debug broken code, and we can't guess them. BTW - since `browser.getSelectedFile()` returns a `File` object, I'd recommend passing a `File` rather than a `String`. See also [The Use of Multiple JFrames, Good/Bad Practice?](http://stackoverflow.com/q/9554636/418556) BTW - **Don't use the browser 'back' button to edit a post. It wipes out other edits. Use the link below the question.** :-/ – Andrew Thompson Sep 27 '16 at 17:42
  • i edit my post and add error logs ;) – snowflake Sep 28 '16 at 09:42
  • 1
    1) Tip: Add @Frakcool (or whoever, the `@` is important) to *notify* the person of a new comment. 2) See [What is a stack trace, and how can I use it to debug my application errors?](http://stackoverflow.com/q/3988788/418556) & [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/q/218384/418556) 3) There is still no MCVE as suggested by Frakcool more than 24 hours ago! Please attend to that. – Andrew Thompson Sep 29 '16 at 02:04

0 Answers0