Zum Inhalt springen

kleines Problem


Artox

Empfohlene Beiträge

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 ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...