Interface JButton etc. wird in JFrame mit paint() nicht angezeigt

S4nd

Mitglied
Wie schon oben beschrieben versuche ich ein GUI bestehend aus JButton, JNumberField, JLabel etc. zu basteln. Ich möchte aber ich Hintergrund einen kleinen Grundriss mit Linien zeichnen lassen um es besser zu veranschaulichen.

Meine Vorgehensweise:
-JFrame
-Buttons etc. in Skyline() erstellen
-Linien in paint(Graphics g) zeichnen
-Buttons grafisch in paint(Graphics g) hinzufügen

Was Passiert?
Meine Grafik wird wie gewünscht gezeichnet, doch werden die Buttons und Textfelder erst nach einem Klich an dessen Position sichtbar, JLabel garnicht.

Was ist der Fehler?

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JFrame;

public class Skyline extends JFrame {
  // Anfang Attribute
  private JNumberField jNumberField1 = new JNumberField();
  private JNumberField jNumberField2 = new JNumberField();
  private JNumberField jNumberField3 = new JNumberField();
  private JNumberField jNumberField4 = new JNumberField();
  private JNumberField jNumberField5 = new JNumberField();
  private JNumberField jNumberField6 = new JNumberField();
  private JNumberField jNumberField7 = new JNumberField();
  private JNumberField jNumberField8 = new JNumberField();
  private JButton jButton1 = new JButton();
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  private JLabel jLabel7 = new JLabel();
  private JLabel jLabel8 = new JLabel();
  private JLabel jLabel9 = new JLabel();
  private JLabel jLabel10 = new JLabel();
  private JLabel jLabel11 = new JLabel();
  // Ende Attribute
  
  public Skyline() { 
    // Frame-Initialisierung
    setResizable(false);
    this.setTitle("Skyline");
    this.setLocation(100, 100);
    this.setResizable(false);
    this.setLayout(null);
    this.setSize(510,290);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //Panel cp = new Panel(null);
    //add(cp);   
    // Anfang Komponenten
    
    jNumberField1.setBounds(40, 32, 33, 25);
    jNumberField1.setText("");
    jNumberField2.setBounds(72, 32, 33, 25);
    jNumberField2.setText("");
    jNumberField3.setBounds(232, 32, 33, 25);
    jNumberField3.setText("");
    jNumberField4.setBounds(264, 32, 33, 25);
    jNumberField4.setText("");
    jNumberField5.setBounds(40, 168, 33, 25);
    jNumberField5.setText("");
    jNumberField6.setBounds(72, 168, 33, 25);
    jNumberField6.setText("");
    jNumberField7.setBounds(232, 168, 33, 25);
    jNumberField7.setText("");
    jNumberField8.setBounds(264, 168, 33, 25);
    jNumberField8.setText("");
    jButton1.setBounds(112, 216, 113, 33);
    jButton1.setText("Berechnen");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    jLabel1.setBounds(48, 16, 54, 20);
    jLabel1.setText("Koord 1:");
    jLabel2.setBounds(240, 16, 54, 20);
    jLabel2.setText("Koord 2:");
    jLabel3.setBounds(48, 152, 54, 20);
    jLabel3.setText("Koord 3:");
    jLabel4.setBounds(240, 152, 54, 20);
    jLabel4.setText("Koord 4:");
    jLabel5.setBounds(48, 56, 43, 19);
    jLabel5.setText("x         y");
    jLabel6.setBounds(240, 56, 43, 19);
    jLabel6.setText("x         y");
    jLabel7.setBounds(48, 192, 43, 19);
    jLabel7.setText("x         y");
    jLabel8.setBounds(240, 192, 43, 19);
    jLabel8.setText("x         y");
    jLabel9.setBounds(352, 48, 123, 25);
    jLabel9.setText("Erlaubte Bauhöhe:");
    jLabel10.setBounds(352, 80, 54, 20);
    jLabel10.setText(" ");
    jLabel10.setBackground(Color.GREEN);
    jLabel10.setOpaque(true);
    jLabel11.setBounds(408, 80, 54, 20);
    jLabel11.setText("Meter");
    jLabel11.setOpaque(false);
    // Ende Komponenten
    
    repaint(); 
  } // end of public Skyline
  
  public void paint(Graphics g){ 
    //Grafik zeichnen
    g.setColor(Color.BLACK);
    g.drawLine(112,80,230,80);
    g.drawLine(112,80,112,193);
    g.drawLine(112,193,230,193);
    g.drawLine(230,80,230,193);
    g.fillOval(107,75,10,10);
    g.fillOval(224,75,10,10);
    g.fillOval(107,188,10,10);
    g.fillOval(225,188,10,10);
    
    //GUI hinzufügen
    getContentPane().add(jNumberField1);
    getContentPane().add(jNumberField2);
    getContentPane().add(jNumberField3);
    getContentPane().add(jNumberField4);
    getContentPane().add(jNumberField5);
    getContentPane().add(jNumberField6);
    getContentPane().add(jNumberField7);
    getContentPane().add(jNumberField8);
    getContentPane().add(jButton1);
    getContentPane().add(jLabel1);
    getContentPane().add(jLabel2);
    getContentPane().add(jLabel3);
    getContentPane().add(jLabel4);
    getContentPane().add(jLabel5);
    getContentPane().add(jLabel6);
    getContentPane().add(jLabel7);
    getContentPane().add(jLabel8);
    getContentPane().add(jLabel9);
    getContentPane().add(jLabel10);
    getContentPane().add(jLabel11);
  } 
  
  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed
  
  // Ende Methoden
  
  public static void main(String[] args) {
    new Skyline();    
  } // end of main
  
} // end of class Skyline



Ich hoffe ihr könnt mir helfen! :oops:
Danke! ;)
 

Anhänge

  • JFrame Problem.JPG
    JFrame Problem.JPG
    29,1 KB · Aufrufe: 33

njans

Top Contributor
Java:
setVisible(true);

Das ruft man immer am Ende auf. Wenn alles fertig plaziert ist, dann kann es angezeigt werden.
 

njans

Top Contributor
Ich sehe gerade:
Java:
//GUI hinzufügen
    getContentPane().add(jNumberField1);
    getContentPane().add(jNumberField2);
    getContentPane().add(jNumberField3);
    getContentPane().add(jNumberField4);
    getContentPane().add(jNumberField5);
    getContentPane().add(jNumberField6);
    getContentPane().add(jNumberField7);
    getContentPane().add(jNumberField8);
    getContentPane().add(jButton1);
    getContentPane().add(jLabel1);
    getContentPane().add(jLabel2);
    getContentPane().add(jLabel3);
    getContentPane().add(jLabel4);
    getContentPane().add(jLabel5);
    getContentPane().add(jLabel6);
    getContentPane().add(jLabel7);
    getContentPane().add(jLabel8);
    getContentPane().add(jLabel9);
    getContentPane().add(jLabel10);
    getContentPane().add(jLabel11);

Das steht in der paint(). Das solltest du auf gar keinen Fall machen! paint zeichnet, das ist alles was paint machen soll.
Sowas gehört in den Konstruktor. Raus mit dem Code aus der Paint.
 

qexxler

Aktives Mitglied
Guten Abend zusammen,

ich habe hier einfach mal eine kleine Demo für dich geschrieben. Schau sie dir einfach mal an. Dort wird gezeigt, wie du einfach ein JLabel anzeigen lassen kannst.

Komponenten, die du der ContentPane hinzufügst, bitte nicht in die paint() Methode schreiben.

Java:
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Skyline extends JFrame {

	private static final long serialVersionUID = 1L;
	private JLabel lblText;

	public Skyline() {

		// --- Allgemeine Einstellungen
		this.setTitle("Skyline");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(300, 100);
		
		// --- Methoden zum initialisieren der Komponenten
		initComponents();
		addComponents();

		// --- Frame Einstellungen ---
		this.setVisible(true);
		this.setLocationRelativeTo(null);
	}

	// --- Komponenten werden erstellt ---
	private void initComponents() {
		lblText = new JLabel("Hier steht ein Text");
		lblText.setBounds(10, 10, 150, 30);
	}

	// --- Komponenten werden der ContentPane hinzugefügt 
	private void addComponents() {
		Container con = this.getContentPane();
		con.setLayout(null);
		con.add(lblText);
	}

	// --- Main-Methode
	public static void main(String[] args) {
		new Skyline();
	}
}

Falls du noch Fragen haben solltest, schreib sie hier einfach rein. Werde sie mir dann morgen anschauen.

Gute Nacht.
 

qexxler

Aktives Mitglied
Zwei kleine Tipps kann ich dir noch geben:

1.) Kommentier deine paint() - Methode einmal aus und schaue, was passiert.
2.) Zum Zeichnen Implementierst du am besten eine Klasse, die von JLabel bzw. JPanel erbt und dort überschreibst du dann die paintComponent() - Methode. In diese Methode kannst du dann, wie bei dir in deinem Beispiel, gezeichnet werden. Ein Graphics Objekt hast du dort ebenfalls zur Verfügung. Und eine Instanz dieser Klasse fügst du dann einfach deinem Frame hinzu. Fertig. Falls du Fragen hast, poste es hier einfach. Aber probiere es vorher erst einmal selbst. ;)

Gute Nacht.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
V wie kann ich eine Schleife pausieren, bis ein Jbutton gedrückt wird ? Java Basics - Anfänger-Themen 17
S JButton wird nicht angezeigt Java Basics - Anfänger-Themen 14
E JButton-Text wird in Schleife nicht geändert Java Basics - Anfänger-Themen 4
A JButton wird kleiner mit Border Java Basics - Anfänger-Themen 3
G JButton wird riesig angezeigt ! Java Basics - Anfänger-Themen 7
Hilde22 Neu Start JButton einfügen Java Basics - Anfänger-Themen 2
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
J Jbutton blinkt Java Basics - Anfänger-Themen 5
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
E JButton und JTextField Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb Icon von JButton ändern Java Basics - Anfänger-Themen 1
P JButton -Arrays Java Basics - Anfänger-Themen 4
A JButton in anderer Klasse bearbeiten. Java Basics - Anfänger-Themen 2
L Erste Schritte JButton reagiert nicht Java Basics - Anfänger-Themen 5
S Bild über JButton legen Java Basics - Anfänger-Themen 3
V Einem JButton anweisungen geben Java Basics - Anfänger-Themen 4
D Methoden JButton und JLabel in einer Methode erstellen Java Basics - Anfänger-Themen 5
F Interface JButton von anderer Klasse hinzufügen Java Basics - Anfänger-Themen 2
J JButton macht was er will Java Basics - Anfänger-Themen 3
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
H JButton - Wechsel der Textfarbe alle 500ms Java Basics - Anfänger-Themen 10
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
N JButton anpassen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
V JButton einer anderen Klasse übergeben? Java Basics - Anfänger-Themen 6
F JButton [] mit Werten hinterlegen Java Basics - Anfänger-Themen 10
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
A weiter JButton Fehler Java Basics - Anfänger-Themen 3
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
N Erste Schritte JButton reagiert nur einmal. Java Basics - Anfänger-Themen 12
S JButton Java Basics - Anfänger-Themen 2
A Farben wechseln mit JButton Java Basics - Anfänger-Themen 2
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
A Labels Inner JButton Event Erstellbar? Java Basics - Anfänger-Themen 3
K JButton alles zurücksetzen Java Basics - Anfänger-Themen 1
U JButton: Beschriftung ueber Variable zuweisen Java Basics - Anfänger-Themen 6
S JButton erscheint erst bei Mouseover Java Basics - Anfänger-Themen 10
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S JDK installieren JButton BorderPoints?! Java Basics - Anfänger-Themen 7
E Problem mit erben von JButton Java Basics - Anfänger-Themen 7
J Bei Hinzufügen von JButton Programm langsam Java Basics - Anfänger-Themen 3
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
S Jbutton per Passworteingabe aktivieren Java Basics - Anfänger-Themen 2
G über JButton Action einen anderen Button verändern Java Basics - Anfänger-Themen 7
H JButton - Icon(.png) aus resources laden Java Basics - Anfänger-Themen 23
M Hintergrundbild für JButton Java Basics - Anfänger-Themen 6
A jbutton - icon linksbündig, text zentriert Java Basics - Anfänger-Themen 10
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
J Hilfe bei JButton Java Basics - Anfänger-Themen 6
A JButton[] und String[] in doppelter For-Schleife Java Basics - Anfänger-Themen 4
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
pg1337 JButton zuschneiden Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
D JButton Array setBackground Java Basics - Anfänger-Themen 2
F JButton wie selektierter JTabbebPane-Header Java Basics - Anfänger-Themen 7
G jButton bei Klick String +1 Java Basics - Anfänger-Themen 5
C OOP Java JButton mit Funktion belegen Java Basics - Anfänger-Themen 3
C JButton.getIcon() != null Java Basics - Anfänger-Themen 3
F welches Layout für JButton-Liste verwenden Java Basics - Anfänger-Themen 6
T JButton Text ändern Java Basics - Anfänger-Themen 4
L JButton erscheint nur mit pack() Java Basics - Anfänger-Themen 3
U Passwort auf JButton setzen. Java Basics - Anfänger-Themen 2
E JButton Hintergrund / Rahmen entfernen? Java Basics - Anfänger-Themen 4
L Bild auf einem JButton Java Basics - Anfänger-Themen 4
K JButton.setText Problem Java Basics - Anfänger-Themen 6
M JButton und DisabledIcon Java Basics - Anfänger-Themen 2
K jButton zur Laufzeit hinzufügen Java Basics - Anfänger-Themen 22
A GUI - JButton problem! Java Basics - Anfänger-Themen 5
M JButton selbst nachprogrammieren Java Basics - Anfänger-Themen 3
A JButton Textrahmen Java Basics - Anfänger-Themen 7
A Platzierung eines JButton Java Basics - Anfänger-Themen 4
D JButton oder ImageIcon klickt "langsam" Java Basics - Anfänger-Themen 5
E JButton klassenübergreifend nutzen? Java Basics - Anfänger-Themen 6
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
S JButton trotz Box-Layout skalieren Java Basics - Anfänger-Themen 6
P JButton identifizieren Java Basics - Anfänger-Themen 8
K Funktion zu einem JButton hinzufügen Java Basics - Anfänger-Themen 27
D HTML Text von jButton disablen Java Basics - Anfänger-Themen 2
E Auf JButton in Arraylist zugreifen Java Basics - Anfänger-Themen 6
E Andere Form eines JButton Java Basics - Anfänger-Themen 17
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
B JButton Größe einstellen? Java Basics - Anfänger-Themen 3
E Zeilenumbruch in JButton mit Variable Java Basics - Anfänger-Themen 2
A JButton erscheint nicht (BlueJ) Java Basics - Anfänger-Themen 2
M JButton sieht komisch aus :-) Java Basics - Anfänger-Themen 5
B JPanel über JButton umändern Java Basics - Anfänger-Themen 9
D JButton transparent bekommen? Java Basics - Anfänger-Themen 5
H JButton Unsichtbar Java Basics - Anfänger-Themen 7
R JTextField mittels JButton in Konsole ausgeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben