Artox Geschrieben 21. Januar 2007 Teilen Geschrieben 21. Januar 2007 also habe da ein kleines Prob glaube zwar das ich nur was übersehen habe oder einen denkfehler habe aber komme einfach nicht drauf also hier das prob. es geht um Java Swing habe da Jbutton und icon ein paar Grafik buttons bastelt und halt das bis jetzt so gemacht das wenn ein button angecklick worden ist in der Konsole z.b. Button 1 geschrieben wurde bzw Button 2 usw. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Systems extends JFrame { private static orbiter goo; public Systems() ... ... ... goo = new orbiter(); ... ... ... if(entry.equals("but1")) goo.orbiter(); else if(entry.equals("but2") ) s ="button2"; das ist der Quelltext aus der einen klasse nun möchte ich das an stelle der text ausgabe "button 1" halt in die klasse orbiter und die methode orbiter() gewechselt wird aber beim klick passiert nichts hier ncoh der quelltext von der weiteren klasse import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class orbiter extends JFrame { public orbiter(){ super("Orbiter MK1"); Icon icon1 = new ImageIcon( "orbiterFULL.JPG" ); Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3, 1)); JButton a1 = new JButton(icon1); a1.setActionCommand("but1"); MyButtonListener myButLis = new MyButtonListener(); a1.addActionListener(myButLis); contentPane.add(a1); } public static void tom(String[] args){ Systems wnd = new Systems(); wnd.setLocation(100, 100); wnd.setSize(590, 580); wnd.setVisible(true); } private class MyButtonListener implements ActionListener { String s=""; public void MyButtonListener() { } public void actionPerformed ( ActionEvent e ) { String entry = e.getActionCommand(); if(entry.equals("but1")); //hier ist noch baustelle } } kann mir da jemand weiter helfen ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 21. Januar 2007 Teilen Geschrieben 21. Januar 2007 Servus, Du könntest damit anfangen, Deine Klassen in einen ansehbaren Zustand zu bringen. Damit meine ich, das Du Namenskonventionen einhältst und Deine Leerzeilen unter Kontrolle bringst. Dann könntest Du eine vernünftige Frage formulieren und diese stellen. Drittens noch den relevanten Teil Deines Codes posten und fertig. Momentan muss ich leider raten. Du rufst irgendwo in Deiner Klasse Systems den Konstruktor von orbiter auf und weist ihn der Variable goo zu. Irgendwo anders willst Du auf dieser Instanz eine Methode mit dem gleichen Namen wie dem Konstruktor aufrufen. Wenn Du mich fragst, sollte das nicht mal kompilieren. Also probiers einfach noch mal mit o.g. Tipps. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artox Geschrieben 22. Januar 2007 Autor Teilen Geschrieben 22. Januar 2007 Hy sorry war gestern schon verdammt spät und mir rauchte der Kopf^^ Also als erstes mal der Quelltext der 3 Klassen import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class Swing extends JWindow { private static Systems sys; public Swing(String image, String text) { JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); Border bd1 = BorderFactory.createBevelBorder(BevelBorder.RAISED); Border bd2 = BorderFactory.createEtchedBorder(); Border bd3 = BorderFactory.createCompoundBorder(bd1, bd2); ((JPanel) contentPane).setBorder(bd3); ImageIcon icon = new ImageIcon(image); contentPane.add(new JLabel(" ", JLabel.CENTER), BorderLayout.NORTH); contentPane.add(new JLabel(icon, JLabel.CENTER), BorderLayout.CENTER); contentPane.add(new JLabel(text, JLabel.CENTER), BorderLayout.SOUTH); setContentPane(contentPane); } public void showFor(int millis) { Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); setLocation(dim.width / 3, dim.height / 3); setSize(dim.width / 3, dim.height / 3); setVisible(true); try { Thread.sleep(millis); } catch (InterruptedException e) { } setVisible(false); } public static void main(String[] args) { Swing intro = new Swing("Main.gif", "Intro"); intro.showFor(3000); sys.tom(); // also gier soll es zur klasse Systems gehen // und dort die liste an JButtons aufgerufen werden // das funzt auch } } import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Systems extends JFrame { private static orbiter goo; public Systems() { super("Auswahl treffen"); Icon icon1 = new ImageIcon("test.gif"); Icon icon2 = new ImageIcon("basiscamp.gif"); Icon icon3 = new ImageIcon("erz.gif"); Icon icon4 = new ImageIcon("erzmine-II.gif"); Icon icon5 = new ImageIcon("erzschmelze01.gif"); Icon icon6 = new ImageIcon("fabrik.gif"); Icon icon7 = new ImageIcon("fabrik2.gif"); Icon icon8 = new ImageIcon("fabrik3.gif"); Icon icon9 = new ImageIcon("fabrikII-1.gif"); Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3, 1)); JButton a1 = new JButton(icon1); JButton a2 = new JButton(icon2); JButton a3 = new JButton(icon3); JButton a4 = new JButton(icon4); JButton a5 = new JButton(icon5); JButton a6 = new JButton(icon6); JButton a7 = new JButton(icon7); JButton a8 = new JButton(icon8); JButton a9 = new JButton(icon9); a1.setActionCommand("but1"); a2.setActionCommand("but2"); a3.setActionCommand("but3"); a4.setActionCommand("but4"); a5.setActionCommand("but5"); a6.setActionCommand("but6"); a7.setActionCommand("but7"); a8.setActionCommand("but8"); a9.setActionCommand("but9"); MyButtonListener myButLis = new MyButtonListener(); a1.addActionListener(myButLis); a2.addActionListener(myButLis); a3.addActionListener(myButLis); a4.addActionListener(myButLis); a5.addActionListener(myButLis); a6.addActionListener(myButLis); a7.addActionListener(myButLis); a8.addActionListener(myButLis); a9.addActionListener(myButLis); contentPane.add(a1); contentPane.add(a2); contentPane.add(a3); contentPane.add(a4); contentPane.add(a5); contentPane.add(a6); contentPane.add(a7); contentPane.add(a8); contentPane.add(a9); } public static void tom() { Systems wnd = new Systems(); wnd.setLocation(100, 100); wnd.setSize(600, 400); wnd.setVisible(true); } private class MyButtonListener implements ActionListener { String s = ""; public void MyButtonListener() { } public void actionPerformed(ActionEvent e) { String entry = e.getActionCommand(); if (entry.equals("but1")) goo.tomm(); // hier sollte zur klasse Orbiter gewechselt werden // bis hierher geht alles ! else if (entry.equals("but2")) s = "button2";// momentan nur konsolen ausgabe else if (entry.equals("but3")) s = "button3"; // momentan nur konsolen ausgabe else if (entry.equals("but4")) s = "button4";// momentan nur konsolen ausgabe else if (entry.equals("but5")) s = "button5"; // momentan nur konsolen ausgabe else if (entry.equals("but6")) s = "button6";// momentan nur konsolen ausgabe else if (entry.equals("but7")) s = "button7"; // momentan nur konsolen ausgabe else if (entry.equals("but8")) s = "button8";// momentan nur konsolen ausgabe else if (entry.equals("but9")) s = "button9"; // momentan nur konsolen ausgabe } } } import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.*; public class orbiter extends JFrame { public orbiter() { super("Orbiter MK1"); Icon icon1 = new ImageIcon("orbiterFULL.JPG"); Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3, 1)); JButton a1 = new JButton(icon1); a1.setActionCommand("but1"); MyButtonListener myButLis = new MyButtonListener(); a1.addActionListener(myButLis); contentPane.add(a1); } public static void tomm() { Systems wnd = new Systems(); wnd.setLocation(100, 100); wnd.setSize(590, 580); wnd.setVisible(true); } private class MyButtonListener implements ActionListener { String s = ""; public void MyButtonListener() { } public void actionPerformed(ActionEvent e) { String entry = e.getActionCommand(); if (entry.equals("but1")) ; // noch im bau } } } habe schon mal ein paar sachen weg genommen die ansich überflüssig waren halt fehler von mir Sinn des ganzen(ist und bleibt alles nur Übung) Das wenn das Programm aufgerufen wird ein titel bild kommt.Das geht dann Kommt ein Fenster mit 9 Icon Buttons mit jeweiliger Grafik das geht auch dann soll halt wenn ein button gedrückt wird, immoment nur der erste, ein einzelner Grosser button mit einer grafik aufgerufen werden(was sich halt in der klasse Orbiter befindet). und das geht nicht :-( bin aber gerade beim überlegen woran es liegt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 22. Januar 2007 Teilen Geschrieben 22. Januar 2007 Guten Morgen, also Deine Klassen sind immer noch furchtbar. Du hast immer noch eine kleingeschriebene Klasse orbiter. Du hast static-Methoden, die Du auf uninitialisierte Instanzen aufrufst. Deine IDE unterstützt scheinbar keine korrekten Einrückungen und Deine Variablennamen sind nicht aussagekräftig. Zu guter Letzt präsentierst Du jetzt statt zwei verkürzten Klassen drei, die einen Haufen Code enthalten, der mit dem Fehler nichts zu tun hat und rausfliegen sollte, wenn Du ihn hier postest. Ich habe mir das Ding trotzdem kurz angesehen. Ich denke, es funktioniert alles. Beim starten kommt dieses Intro, dann die 9 Buttons. Klicke ich auf den ersten, öffnet sich ein zweites Fenster wieder mit 9 Buttons, aber ein wenig größer als das erste Fenster. Du initialisierst hier ja auch wieder ein Objekt der Klasse Systems. Also nochmal: Was soll den passieren, das jetzt nicht passiert. Bevor Du das beantwortest, feuerst Du alle unnötigen Buttons und Grafiken raus, formatierst den Code sauber und benennst die Klassen und Variablen vernünftig. Dann kommen wir zusammen. [EDIT] Stop, jetzt weiß ich, was Du willst (glaub ich)! Du willst den orbiter anzeigen? Dann initialisier in der Methode tomm halt auch diese Klasse und nicht noch ein Systems-Objekt. [/EDIT] Schöne Grüße, Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 22. Januar 2007 Teilen Geschrieben 22. Januar 2007 Code-Formatierung bereinigt! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artox Geschrieben 22. Januar 2007 Autor Teilen Geschrieben 22. Januar 2007 Hy ich weiss das ich da irgendwo an einem denkfehler hänge nur fällt heut der groschen nicht so recht Der sinn des Progs ist Intro ---> 9 Buttons-->> klick auf Button 1-->> soll den einzelnen Button der Klasse Orbiter anzeigen und nicht wieder alle 9 Buttons die grösse des Fensters wird ja eh schon geändert nur der inhalt ist net das was ich will Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 22. Januar 2007 Teilen Geschrieben 22. Januar 2007 Dann initialisier doch in der Klasse orbiter in der Methode tomm kein Systems, sondern ein orbiter, so wie ich es oben gesagt habe. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artox Geschrieben 22. Januar 2007 Autor Teilen Geschrieben 22. Januar 2007 :beagolisc oh man das habe ich nicht gesehen danke für die hilfe glaube wäre noch 10 mal durch den Wald gelaufen ohne einen Baum zu finden Thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 22. Januar 2007 Teilen Geschrieben 22. Januar 2007 Manchmal gehts einem wirklich so. Mein Tipp: mach Dir vorher eine kleine Zeichnung, was so passieren soll. Dann ist es klarer. Bei drei Klassen kann man schon noch durchsteigen, bei größeren Projekten ist es in meinen Augen unverzichtbar, sich auch über die äußere Struktur in Form von Modellen klar zu werden. Und ganz wichtig: saubere Formatierung und gute Benamung, damit ersparst Du Dir eine Menge Ärger. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artox Geschrieben 22. Januar 2007 Autor Teilen Geschrieben 22. Januar 2007 Danke auf jeden fall naja das "kleine Prog" soll ca 2 x 20 Buttons bekommen also normal dann ca 30 klassen naja mal sehen vieleicht kann ich das irgendwie logischer gestallten bin ja erst am anfang von allem ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.