Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster?

Michael_FeM

Mitglied
Hallo Liebe Community,

ich arbeite momentan an einem Projekt für die UNI und beiße mir seit Tagen an folgendem Code die Zähne aus. Ich steige im Moment von C++ auf Java um und bin noch recht neu hier. Trotzdem hoffe ich auf Hilfe in diesem Forum. Über eine Antwort würde ich mich sehr freuen.

Was sich möchte:
Ein Fenster mit Menü Bar in das ich zeichnen kann.

Mein Problem:
Nach dem Komilieren geht ein Fenster mit Menüleiste auf + ein Fenster in dem sich die zu zeichnende Zeichenkette ausgegeben wird.

Frage:
Was mache ich bloß falsch?

Mein Code:
Java:
package graphicalfunction;
import java.awt.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;


@SuppressWarnings({ "unused", "serial" })
public class Drawing extends JFrame implements ActionListener
{
	public Drawing ( )
	{
		//Framelayout
		JFrame frame = new JFrame ("Graphical Control");
		frame.setSize(1280,720);
		frame.setLayout (new FlowLayout());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.getContentPane().setBackground(Color.gray);
		
		//Menu
		JMenuBar menubar = new JMenuBar();
		JMenu filemenu = new JMenu("File");
		filemenu.add(new JSeparator());
		filemenu.add(new JSeparator());
		JMenu editmenu = new JMenu("Mode");
		editmenu.add(new JSeparator());
		JMenuItem fileItem1 = new JMenuItem("Quit");
		JMenuItem editItem3 = new JMenuItem("Pulse");
		JMenuItem editItem4 = new JMenuItem("Continous");
		filemenu.add(fileItem1);
		editmenu.add(editItem3);
		editmenu.add(editItem4);
		menubar.add(filemenu);
		menubar.add(editmenu);
		frame.setJMenuBar(menubar);
		
		//Menu Colors
		menubar.setBackground(Color.white);  
		filemenu.setForeground(Color.black);  
		editmenu.setForeground(Color.black);
		//ActionListener
		fileItem1.addActionListener(this);
		fileItem1.addActionListener(new ActionListener()	
         {
             public void actionPerformed(ActionEvent e)
             {
                 System.exit(0);
             }
         });
}
	
	public void paint (Graphics g) 
	{
		g.drawString("Test Zeichenkette",50,100);
		
	}
	
	
	public static void main(String[] args) 
	{
		Drawing fb = new Drawing ();
		fb.setVisible(true);
		
		
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}	
}



Freundliche Grüße,
Michael
 

AngryDeveloper

Bekanntes Mitglied
Du erstellst zwei JFrames und zeigst beide an.
Das eine ist deine Klasse Drawing selbst, da sie von JFrame erbt.
Das zweite JFrame erstellst du innerhalb des Konstruktors von Drawing und zeigst dieses ebenfalls an.
(siehe setVisible(true) einmal an Zeile 35 und einmal bei Zeile 80)
 

Michael_FeM

Mitglied
Hey,

erstmal "Danke" für die schnelle Antwort. Ich habe das "setVisible(true)" in Zeile 80 gelöscht. Allerdings geht dann
nur noch ein Fenster mit Menü Leiste auf.

Wie schaffe ich es den "String" auch in diesem Fenster auszugeben?

Gruß,
Michael
 

Momolin

Aktives Mitglied
Hallo,

so würde es gehen:
Java:
public Drawing()
	{
		// Framelayout
		// JFrame frame = new JFrame("Graphical Control");
		this.setSize(1280, 720);
		this.setLayout(new FlowLayout());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.getContentPane().setBackground(Color.gray);
		
		//[...]
}

und
Java:
@Override
	public void paint(Graphics g)
	{
		// Rahmen, Menüs usw. zeichnen
		super.paint(g);
		g.drawString("Test Zeichenkette", 50, 100);
	}

ich würde mir aber ein "Zeichenpanel" programmmieren:
Java:
public class DrawPanel extends JPanel {

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawString("Test Zeichenkette", 50, 100);

		// noch besser mit Graphics2D arbeiten
		Graphics2D draw = (Graphics2D) g;
	}
}

und dieses dann dem JFrame hinzufügen:

Java:
  this.add(new DrawPanel());

Grüße
 

bERt0r

Top Contributor
Erstmal: wenn du dich bei jemandem bedanken willst, benutz doch den "Danke" Button.
2. Du überschreibst die paint Methode. Das ist hier doppelt falsch: Erstens weil man nicht die paint, sondern die paintComponent Methode überschreiben sollte wenn man selber was zeichnen will auf der Komponente. Zweitens weil du ja auch noch ein Menü etc darstellen willst und das klappt nur, wenn man das Menu in der paint dann auch zeichnet.

Du solltest dir sowieso einen geeigneteren Namen für deine Klasse suche. Drawing bzw. Zeichnen ist kein Name für ein Objekt (ist nämlich ein Verb :) ). Besser wäre z.B ein DrawingPanel. Das lässt du von JPanel erben, überschreibst darin die paintComponent Methode und schmeisst dein Panel in einen Frame.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
M JavaFX WebView lässt sich nur einmal öffnen AWT, Swing, JavaFX & SWT 2
J Swing Fenster lässt sich nach Schließung nicht wieder öffnen AWT, Swing, JavaFX & SWT 4
N Swing FileFilter lässt JTree sich nicht öffnen AWT, Swing, JavaFX & SWT 2
F SWT Dialog lässt sich nur einmal öffnen AWT, Swing, JavaFX & SWT 3
I Screen nur 1x öffnen können AWT, Swing, JavaFX & SWT 17
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
A 2 Stages gleichzeitig öffnen AWT, Swing, JavaFX & SWT 2
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
A Ein browser Fenter prametrisiert öffnen AWT, Swing, JavaFX & SWT 15
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
J JavaFX Kamera im Programm öffnen AWT, Swing, JavaFX & SWT 6
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
G Swing JFrame öffnen bei Pidgin Benachrichtigung AWT, Swing, JavaFX & SWT 5
P JavaFX Project im Browser öffnen AWT, Swing, JavaFX & SWT 4
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
D Dateien öffnen AWT, Swing, JavaFX & SWT 16
S Swing txt Dateien öffnen mit JFilleChooser AWT, Swing, JavaFX & SWT 4
O Neuen JFrame öffnen und alten schließen AWT, Swing, JavaFX & SWT 7
D Swing DICOM Files öffnen, wie? AWT, Swing, JavaFX & SWT 5
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
B VLC Player in JavaFX öffnen AWT, Swing, JavaFX & SWT 7
X Popup Menü nur bei besonderem Fall öffnen AWT, Swing, JavaFX & SWT 3
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
VfL_Freak AWT Browser öffnen und schließen via java.awt.Desktop AWT, Swing, JavaFX & SWT 4
achillesat SWT Browser öffnen durch Button click AWT, Swing, JavaFX & SWT 5
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
M Datei in jar öffnen AWT, Swing, JavaFX & SWT 11
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
S JFrame sicher öffnen AWT, Swing, JavaFX & SWT 9
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
E Fenster schließen und ein anderes öffnen AWT, Swing, JavaFX & SWT 9
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
T speichern funktioniert,aber öffnen nicht AWT, Swing, JavaFX & SWT 2
J Mit Button neues Fenster öffnen AWT, Swing, JavaFX & SWT 17
J SWT Dialog in Dialog automatisch öffnen AWT, Swing, JavaFX & SWT 19
J Programm nur einmal öffnen AWT, Swing, JavaFX & SWT 3
J jme neues projekt öffnen AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
X Swing JTable stets mit gleichem Inhalt öffnen AWT, Swing, JavaFX & SWT 3
E Applet Neuen Tab aus Applet öffnen AWT, Swing, JavaFX & SWT 3
C jComboBox in jTable ohne Klick öffnen AWT, Swing, JavaFX & SWT 4
C JComboBox Popup nicht öffnen AWT, Swing, JavaFX & SWT 4
T neues Fenster durch Button öffnen funktioniert nicht!! AWT, Swing, JavaFX & SWT 2
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
H Applet - Hilfedateien im Browser öffnen / eine Webseite laden AWT, Swing, JavaFX & SWT 6
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
O Login Dialog zweimal öffnen AWT, Swing, JavaFX & SWT 2
N Swing TreePath Datei öffnen AWT, Swing, JavaFX & SWT 7
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
W jar Datei öffnen AWT, Swing, JavaFX & SWT 4
P Firefox öffnen GUI AWT, Swing, JavaFX & SWT 8
Y JFrame in JFrame öffnen AWT, Swing, JavaFX & SWT 26
T Ordner öffnen nach Klick auf einen Button AWT, Swing, JavaFX & SWT 3
C AWT Über Pulldownmenü neue Javadatei öffnen AWT, Swing, JavaFX & SWT 7
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
kodela FileChooser mit "absolutem" Root-Verzeichnis öffnen AWT, Swing, JavaFX & SWT 2
C Internetseite öffnen AWT, Swing, JavaFX & SWT 2
T AWT Vollbild öffnen und schließen AWT, Swing, JavaFX & SWT 3
M Fenster nach minimierung zum tray wieder öffnen AWT, Swing, JavaFX & SWT 3
S Auswahlfenster: Datei beim Doppelklick öffnen AWT, Swing, JavaFX & SWT 8
D Swing Ein dahinterliegendes Fenster nach dem öffnen schließe AWT, Swing, JavaFX & SWT 15
R Fenster versetzt öffnen AWT, Swing, JavaFX & SWT 5
Z Swing Problem mit JDialog öffnen AWT, Swing, JavaFX & SWT 10
L JFileChooser braucht lang zum öffnen AWT, Swing, JavaFX & SWT 2
D Neues Java Fenster öffnen AWT, Swing, JavaFX & SWT 2
M File-Chooser Problem (2 X Mausklick öffnen) AWT, Swing, JavaFX & SWT 11
S Frame in Frame öffnen ! AWT, Swing, JavaFX & SWT 5
T Views bedingt öffnen oder schließen AWT, Swing, JavaFX & SWT 6
N Durch Button drücken neues Fenster öffnen AWT, Swing, JavaFX & SWT 13
Daniel_L JDialog öffnen und Fenstergrößenproblem AWT, Swing, JavaFX & SWT 8
B JTree - Kontextmenü per Tastatur öffnen AWT, Swing, JavaFX & SWT 3
G JComboBox soll beim Öffnen eine andere JComboBox öffnen AWT, Swing, JavaFX & SWT 3
O JDialog anzeigen beim öffnen einer Datenbank AWT, Swing, JavaFX & SWT 4
R Ein Applet von einem Applet öffnen lassen AWT, Swing, JavaFX & SWT 2
S JComboBox zeigt beim 1. öffnen nur 2 Elemente ? AWT, Swing, JavaFX & SWT 9
S Browser ohne Header öffnen AWT, Swing, JavaFX & SWT 3
A HTML-Datei öffnen AWT, Swing, JavaFX & SWT 3
F Altes Frame öffnen mit den Werten AWT, Swing, JavaFX & SWT 7
I Applet --> neues Fenster öffnen AWT, Swing, JavaFX & SWT 11
S JTree, Knoten anhand eines Pfades öffnen? AWT, Swing, JavaFX & SWT 2
G JToolbar gleich als eigenes Fenster öffnen AWT, Swing, JavaFX & SWT 2
G avi-Datei mit Desktop.getDesktop().open(File) öffnen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben