Swing Java-Swing-Uebungen

M

marvin123

Gast
Hallo!

Ich/Wir haben erst vor 2 Wochen angefangen mit Java und gleich ein bisschen Swing kennengelernt.

Nun habe ich 2 Aufgaben, die ich erledigen muss:

Übung 1: Fenster mit Button. Wenn Button gedrückt wird dann soll es von Rot auf Grün bzw. von Grün auf Rot wechseln.

Übung 2: 2 Buttons. Einer Grün(text) und der andere Rot(text). Soll immer der button(text: grün bzw. rot) der den aktuellen Hintergrund(rot bzw. grün) entspricht gesperrt sein. Also, wenn der Hintergrund grün ist, soll jener Button gesperrt sein wo "grün" drauf steht und das gleiche mit rot.

Ich kann die Aufgaben nicht besser beschreiben, aber wenn ihr euch den Code anschaut dann wirds sicher klar^^.

Die 1. Aufgabe funktioniert ja einwandfrei, aber bei der 2. hab ich nicht wirklich eine Ahnung wie ich das machen soll. Könnt ihr mir paar Tipps geben bitte?

mfg marvin

Java:
package uebg01;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class MainFrame extends JFrame {
	private JPanel contentPane;
	private JButton button1;
	private JButton button2;
	private JPanel panel1;
	
	public MainFrame() {
		try {
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			FrameInit();
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}

	/**
	 * Component initialization.
	 * 
	 * @throws java.lang.Exception
	 */
	private void FrameInit() throws Exception {
		contentPane = (JPanel) getContentPane();
		contentPane.setLayout(new BorderLayout());
		setSize(new Dimension(400, 300));
		setTitle("Frame Title");

		panel1 = new JPanel();
		panel1.setLayout(new FlowLayout());
		panel1.setBackground(Color.green);
		button1 = new JButton();
		button2 = new JButton();
		button1.setText("red");
		button2.setText("green");
		button1.setFont(new Font("Calibri", Font.BOLD, 15));
		button2.setFont(new Font("Calibri", Font.BOLD, 15));
		button1.addActionListener(new Button1_ActionListener());
		button2.addActionListener(new Button2_ActionListener());
		panel1.add(button1);
		panel1.add(button2);
		contentPane.add(panel1, BorderLayout.CENTER);
		button2.setEnabled(false);
	}

	private class Button1_ActionListener implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			if (panel1.getBackground() == Color.green) {
				panel1.setBackground(Color.red);
				button1.setText("green");
				button2.setEnabled(true);
				button1.setEnabled(false);
			} else {
				button1.setEnabled(false);
				panel1.setBackground(Color.green);
				button1.setText("red");
				button2.setEnabled(false);
			}
		}
	}
	
	private class Button2_ActionListener implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			if (panel1.getBackground() == Color.green) {
				panel1.setBackground(Color.red);
				button2.setText("green");
				button2.setEnabled(true);
				button1.setEnabled(false);
			} else {
				button1.setEnabled(false);
				panel1.setBackground(Color.green);
				button2.setText("red");
				button2.setEnabled(false);
			}
		}
	}
}
 
G

Gast2

Gast
Und was ist genau deine Frage? Was funktioniert den nicht richtig was passiert aktuell? Schon mal debugger angeschmissen?


[TIPP]1.Methodennamen schreibt man klein
2. Geb deinen Variablen doch sprechende name wie buttonRed und buttonGreen oder sowas[/TIPP]
 
M

marvin123

Gast
Naja ich bekomm die 2te Aufgabe einfach nicht hin, mit den sperren. Die buttons anders benennen naja, diese wechselns ich doch immer ab.

Wenn ich auf Button "red" klicken, dann wird Hintergrund rot und der button heißt nun "gruen", das kann man eh sehn unten im Code.

Und wenn jetzt auf einem Button "red" steht und der Hintergrund auch rot ist, dann soll dieser Button gesperrt werden. Wenn ein grüner Hintergrund ist dann soll der Button mit dem Text "grün" gespeert werden. Das finde ich halt sehr schwer. Ich habs versucht, aber bei mir werden am Schluss immer alle Buttons gesperrt.

Ich programmieren auf Eclipse, wo gibts den hier einen Debugger? Einzelschritt meinst du oder?
 
M

marvin123

Gast
Ok gut, habs hinbekommen danke.

Ich hab aber eine Frage zum Ableiten, also extends. Ich habe hier 2 verschiedene Codes:

Ok, gut wir wissen das MainFrame alle Methoden/Klassen von JFrame geerbt hat.

Hier der Code, wo man ein Hauptfenster(new Mainframe) erzeugt:
Java:
package uebg02;

import java.awt.*;
import javax.swing.*;

public class Application {

  /**
   * Construct and show the application.
   */
  public Application() {
    MainFrame frame = new MainFrame();
    // Validate frames that have preset sizes
    frame.validate();

    // Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation( (screenSize.width - frameSize.width) / 2,
                      (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }

  /**
   * Application entry point.
   *
   * @param args String[]
   */
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new Application();
      }
    });
  }
}

Diesen Code hier hat der Lehrer noch nicht erklärt, d.h. ich verstehe so gut wie gar nix davon.

Wenn Zeile 12 ausgeführt wird, dann wird ja ein Objekt erzeugt oder? Also ein Hauptfenster in dem Fall. In dieser Zeile springt es dann zu dem Konstruktor der sich in MainFrame.java in Zeile 14 befindet und dann halt das FrameInit aufmacht?

Geht er auch irgendwann mal zur Zeile 8, oder wird das eh schon überprüft/festgelegt/durchgeführt, wenn er ins MainFrame.java kommt?

In der Methode MainFraime ist ja eine neue Methode namens FrameInit, zumindest der Aufruf, übernimmt FrameInit jetzt die gleichen Klassen/Methoden von MainFrame?

Hier der für mich verständliche Code:
Java:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.FlowLayout;

public class View
{
   public static void main (String[] args)
   {
      // Hauptfenster erzeugen
      JFrame frame = new JFrame ("Hauptfenster");
      // Schaltflaeche erzeugen
      JButton button1 = new JButton ("Schaltflaeche1");

      frame.setLayout (new FlowLayout());

      // Schaltflaeche dem Hauptfenster hinzufuegen.
      frame.add (button1);
 
      frame.setSize (400, 100);
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      frame.setVisible (true);
   }
}

}

contentPane.setLayout(new BorderLayout()); vs frame.setLayout(new BorderLayout):

Und genau hier ist das Problem. Ich tu mir schwer das Problem zu erklären^^.
in dem view.java, wird das frame.setLay.... verwendet und halt in meine Programm das andere.

Hat jetzt dieses contentPane die gleichen Eigenschaften, oder Methoden von JFrame, weil man veerbt hat?

Beim anderen ist es mir völlig klar. Weil frame direkt von JFrame ist.
 
M

marvin123

Gast
Sorry, vergessen:

MainFrame.java:
Java:
package uebg02;


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class MainFrame extends JFrame {
	private JPanel  contentPane;
	private JButton button1;
	private JPanel  panel1;
	private JButton button2;
	
	public MainFrame() {
		try {
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			FrameInit();
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}

	/**
	 * Component initialization.
	 * 
	 * @throws java.lang.Exception
	 */
	private void FrameInit() throws Exception {
		contentPane = (JPanel) getContentPane();
		contentPane.setLayout(new BorderLayout());
		setSize(new Dimension(400, 300));
		setTitle("Frame Title");

		panel1 = new JPanel();
		panel1.setLayout(new FlowLayout());
		panel1.setBackground(Color.green);
		
		button1 = new JButton();
		button2 = new JButton();
		button1.setText("red");
		button2.setText("green");
		button2.setEnabled(false);
		button1.addActionListener(new Button1_ActionListener());
		button2.addActionListener(new Button2_ActionListener());
		
		
		panel1.add(button1);
		panel1.add(button2);
		
		contentPane.add(panel1, BorderLayout.CENTER);
	}

	private class Button1_ActionListener implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			panel1.setBackground(Color.red);
			button2.setEnabled(true);
			button1.setEnabled(false);
		}
	}
	
	private class Button2_ActionListener implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			panel1.setBackground(Color.green);
			button1.setEnabled(true);
			button2.setEnabled(false);
		}
	}
}
 
G

Gast2

Gast
Nein das hat nichts mit Vererbung zu tun. ContentPane ist ein Container und eben auch eine setLayout mit Methode.
Schau dir doch einfach mal die Sourcen von JFrame#setLayout an, dann siehst du doch was in der Methode passiert und dann ist sofort alles klar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
D Java Swing Cache AWT, Swing, JavaFX & SWT 0
T Java Swing Oberfläche aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
T Java Swing Main GUI Thread AWT, Swing, JavaFX & SWT 3
S Java Swing GUI mit MVC und Threads AWT, Swing, JavaFX & SWT 6
K Automatische Skalierung von GUI Elementen (Java Swing) AWT, Swing, JavaFX & SWT 2
A Java Swing Error AWT, Swing, JavaFX & SWT 3
D Layoutmanager in Java Swing vs. Java AWT AWT, Swing, JavaFX & SWT 3
R Swing Java Swing Gui und nebenläufige Threads AWT, Swing, JavaFX & SWT 4
J Swing MVC mit Java Swing, insbesondere die Controller-Struktur AWT, Swing, JavaFX & SWT 4
2 Werde Java GUIs immer noch mit dem in die Jahre gekommen Swing gemacht? AWT, Swing, JavaFX & SWT 12
S [Java+Scala] GUI mit Swing oder JavaFX AWT, Swing, JavaFX & SWT 6
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
T SWF in JAVA [Swing] AWT, Swing, JavaFX & SWT 4
I Java Swing - repaint() funktioniert nicht AWT, Swing, JavaFX & SWT 4
S Beim Aufbau GUI: java.lang.IllegalAccessError in javax.swing AWT, Swing, JavaFX & SWT 6
D Probleme mit Java Swing unter Mac OSX AWT, Swing, JavaFX & SWT 13
M icons für die java.swing components wie jbutton etc AWT, Swing, JavaFX & SWT 5
N Java Swing Event Handling AWT, Swing, JavaFX & SWT 7
S Implementierung Java Swing HelloWorld - verständnisproblem AWT, Swing, JavaFX & SWT 3
oliver1974 Compiz-Fusion und Java/Swing. Hölle. AWT, Swing, JavaFX & SWT 6
C Architekturfrage Java Swing (MVC) AWT, Swing, JavaFX & SWT 3
M Java mit Swing - Elemente erst nach klick sichtbar AWT, Swing, JavaFX & SWT 13
A video-datei in java abspielen (SWING) AWT, Swing, JavaFX & SWT 8
M Java, Swing: MouseMotionListener AWT, Swing, JavaFX & SWT 19
Z Bei Problem mit Java Swing brauche dringende Hilfe AWT, Swing, JavaFX & SWT 3
N Swing startet nicht - java.lang.NoSuchMethodError: main AWT, Swing, JavaFX & SWT 8
L swing und java applet.keine Konflikt ,oder? AWT, Swing, JavaFX & SWT 3
P bmp in java-swing darstewllen AWT, Swing, JavaFX & SWT 2
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
Juelin Java <-> Delphi AWT, Swing, JavaFX & SWT 3
H Exceptions seit java: 1.6.0_65 Umstellung AWT, Swing, JavaFX & SWT 3
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
W Kennt jemand Dear ImGui (und den Java-Wrapper dazu)? AWT, Swing, JavaFX & SWT 0
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
D JAVA Schieberegler AWT, Swing, JavaFX & SWT 6
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
Encera Java FX im Eclipse-Marketplace nichtmehr auffindbar AWT, Swing, JavaFX & SWT 6
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
Heldderschatten Java Events und Interfaces AWT, Swing, JavaFX & SWT 18
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
E Java-TexturePaint sehr langsam AWT, Swing, JavaFX & SWT 9
N Java MySQL Datenbank durchsuchen? AWT, Swing, JavaFX & SWT 7
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
izoards *.doc Seitenränder per Java setzen... AWT, Swing, JavaFX & SWT 14
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
J Spiel mit Java AWT, Swing, JavaFX & SWT 9
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
N FXMLLoader.load java.lang.RuntimeException: Gradle AWT, Swing, JavaFX & SWT 2
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
M Jogl und Java 3d AWT, Swing, JavaFX & SWT 0
S0PEX JavaFX Java 8 auf 15 migrieren OpenJFX mit Gradle eingebunden, jedoch nicht gefunden !? AWT, Swing, JavaFX & SWT 4
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
V Java-Zeichenfeld mit AWT AWT, Swing, JavaFX & SWT 3
N java Gui friert scheinbar zufällig ein AWT, Swing, JavaFX & SWT 5
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben