ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
3534
3534
EMPFEHLEN
-
Hallöchen,
bin mal wieder hier und hab da mal wieder eine Frage...
Ich mal ein programm geschrieben was aus einer XML-Datei Daten ausliest. Habe dadurch logischerweise den Pfad der XML-Datei angegeben und zwar mit der Variable "filename".
Danach habe ich die Datei in einer anderen Klasse bearbeitet und nun sollte ich eine GUI-Oberfläche dafür zaubern (wo bei mir auch zT von euch schon geholfen wurde
).
Mein Frage lautet nun:
Wie kann ich die Datei über den Pfad den ich durch den JFileChooser rausgesucht habe, in die Klasse implementieren, wo ich den Pfad nutzen muss, damit alle Klassen funktionieren?
OMG hab ich kompliziert geschrieben


kurzes Bsp. wie weit ich bin:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
ActionListener openA = new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); fc.setFileFilter( new FileFilter() { @Override public boolean accept( File f ) { return f.isDirectory() || f.getName().toLowerCase().endsWith( ".xml"); } @Override public String getDescription() { return "XML (*.xml)"; } } ); int state = fc.showOpenDialog( null ); if ( state == JFileChooser.APPROVE_OPTION ) { File file = fc.getSelectedFile(); System.out.println(file.getAbsolutePath()); A.setText(file.getAbsolutePath()); String a = file.getAbsolutePath(); try { Desktop.getDesktop().open( new File(a) ); } catch(IOException f) { } System.out.println(a); DA.setFilename(a); System.out.print(DA.getFilename()); A.setText(a); DA.filename = a; } } };
Somit habe ich auf "DA.setFilename(a);" den Pfad und den mag ich nun in meine andere Klasse einfügen, so weit komme ich aber nicht weil mir nach dem auslesen immer eine "NullPointException" angeziegt wird und eine ewig lange Fehlermeldung...
Kann mir jemand dabei helfen?
-
04.04.08 13:57 #2
1. Fehlermeldung Posten
2. Um Zugriff von einem Objekt auf Variablen eines anderen verwendet man getter Methoden (getXXX())."... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
Hier ist die Fehlermeldung:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[COLOR="Red"]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Layout1$4.actionPerformed(Layout1.java:93) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)[/COLOR]
-
Hab mal ein kurzes Beispiel gemacht, wie es in etwa aussieht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.filechooser.FileFilter; public class ButText { testen t = new testen(); public String ap; JFrame f = new JFrame(); Container c = f.getContentPane(); static GridBagLayout gbl = new GridBagLayout(); ActionListener open = new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); fc.setFileFilter( new FileFilter() { @Override public boolean accept( File f ) { return f.isDirectory() || f.getName().toLowerCase().endsWith( ".txt"); } @Override public String getDescription() { return "Text (*.txt)"; } } ); int state = fc.showOpenDialog( null ); if ( state == JFileChooser.APPROVE_OPTION ) { File file = fc.getSelectedFile(); file.getAbsolutePath(); System.out.println(file.getAbsolutePath()); A.setText(file.getAbsolutePath()); String p = file.getAbsolutePath(); ap = file.getAbsolutePath(); t.setFilename(ap); System.out.print(t.getFilename()); } } }; //ÜBERSCHRIFT JLabel Ueschrift = new JLabel("<html><FONT SIZE = 6><u>Überschrift</u></font></html>"); //TextFeld JTextField A = new JTextField(); //IMAGE final Icon smallIcon = new ImageIcon( JMenu.class.getResource("/images/magnifier.png") ); //Button JButton LupeA = new JButton(smallIcon) ; public void ButtonPress() { LupeA.addActionListener(open) ; } public void init() { f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); c.setLayout( gbl ); f.pack(); f.setVisible(true); f.setLocation(128, 128); f.setSize( 350, 150 ); f.setVisible( true ); } static void addComponent( Container cont, GridBagLayout gbl, Component c, int x, int y, int width, int height, int ipadx, int ipady, double weightx, Insets insets ) { GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.VERTICAL; gbc.insets = insets; gbc.gridx = x; gbc.gridy = y; gbc.gridwidth = width; gbc.gridheight = height; gbc.ipadx = ipadx; gbc.ipady = ipady; gbl.setConstraints( c, gbc ); gbc.anchor = GridBagConstraints.WEST; cont.add( c ); } public void GridBLayout() { addComponent( c, gbl, Ueschrift, 0, 0, 16, 1, 0, 0, 1.0, new Insets( 0, 0,20, 0)); addComponent( c, gbl, A, 11, 3, 4, 1, 250, 0, 0.1, new Insets( 0, 0, 0, 0)); addComponent( c, gbl, LupeA, 15, 3, 1, 1, 0, 0, 0.0, new Insets( 0, 0, 0, 10)); } public void run() { init(); GridBLayout(); ButtonPress(); } public static void main( String[] args ) { ButText L = new ButText(); L.run(); } public String getAp() {return ap;} public void setAp(String ap) {this.ap = ap;} }
und die andere Klasse wo die Variable "filename" genutzt werden soll:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public class testen { private String filename; public String getFilename() {return filename;} public void setFilename(String filename) {this.filename = filename;} public void te() { ButText bt = new ButText(); bt.run(); filename = bt.getAp(); System.out.println("Das ist der Text: "+this.getFilename()); } public static void main(String[] args) { testen t = new testen(); t.te(); } }
Büdde


-
irgendwie ist es merkwürdig as ich grad gepostet habe, zeigt mir keine Fehlermeldung an


-
Kann mir nicht jemand helfen
Es funktioniert immer noch nicht....
Büüüüüddddddddeeeee
-
Also wenn man eine GUI zu einem bestehen Programm baut, dann ruft normalerweise die GUI die Methoden der bereits bestehenden Klassen auf.
Also: Wenn du auf den Button klickst geht dein FileChooser auf. Sobald du den Dateinamen vom FileChooser bekommen hast, übergibst du diesen an deine Methode die die XML-Datei ausliest. Und nicht andersrum wie es deine testen-Klasse vermuten lässt (und Klassennamen bitte immer groß schreiben, Methodennamen klein und benutz am besten nicht run als Methodennamen. Das lässt immer auf einen Implementierung von Runnable.run schließen und das ist hier eher unglücklich).
Noch eine Anmerkung: Sei bitte ein wenig geduldig. Viele haben erst nach der Arbeit Zeit hier reinzuschauen aber geantwortet wird dir eigentlich auf jeden Fall. Nur wenn man nervt kannst anders aussehen
-
Danke für die Antwort, habe die Lösung nun aber schon.
Sorry dass ich genervt habe, aber ich musste das heute fertig stellen...
-
Und wie hast dus gelöst?
-
So wie du es dann auch gesagt hast

Weiß auch nicht was vorhin war, war irgendwie der Wurm drin
Hab dann den Wert über public variablen, von einer Klasse in die nächste und dann in die eigentliche (da wo sie benötigt wird), dort wurde dann auch endlich der richtige Pfad im Debugger angezeigt und mit dem Rest muss ich mich nochmal genauer beschäftigen
Danke nochmal und ein schönes Wochenende @ everybody
Ähnliche Themen
-
Innerhalb einer Klasse eine Instanz einer anderen Klasse
Von HackerNeo im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 17.11.09, 13:08 -
Klasse in einer anderen Klasse verwerden?
Von MadCrusher im Forum PHPAntworten: 29Letzter Beitrag: 16.02.08, 04:26 -
Klasse nutzt Methode einer anderen Klasse
Von sasfed im Forum PHPAntworten: 2Letzter Beitrag: 06.02.06, 19:57 -
Zugriff auf eine Klasseninstanz innerhalb einer Funktion einer anderen Klasse?
Von Bailor im Forum PHPAntworten: 4Letzter Beitrag: 09.07.05, 00:19 -
Externe Variablen in einer Klasse nutzen!
Von daddz im Forum PHPAntworten: 2Letzter Beitrag: 12.04.05, 15:51





Zitieren

Login





