swing komponenten werden nicht angezeigt

O

oODARIOo2

Gast
hi liebe community,
ich bin ein totaler anfänger in java und habe versucht ein kleines Programm zu schreiben. Man kann damit sogenannte milos (name kommt von privater vorgeschichte) zählen und dann ein verhältnis ausrechnen. Das problem ist dass nachdem ich ein swing komponent entfernt habe und ein neues hinzugefügt, das neue nicht angezeigt wird, ausser ich verändere die grösse des Fensters. Ich dachte das liegt daran dass es das dann Fenster neu ladet weil es dabei die paint() methode aufruft, und habe somit eine repaint() methode eingefügt, die aber irgendwie nichts nützt...

hier noch der quellcode:

Java:
 import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math.*;

class milorechner {

 double miloeinheiten = 0;
 double endwertberechner = 0;
 boolean rechenbeginner = false;
 boolean neustarter = false;
 boolean weiterfahrer = false;
 int schleiffe = 1;
 
 double minuten;
 double endwert;
 String ergebnis;
 
 JFrame frame;
 JButton milozähler;
 NumberField anzahlminuten;
 JButton rechenausloeser;
 
 public static void main(String []args) {

  milorechner ausführer = new milorechner();
  ausführer.los();

 }

 public void los() {

  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JButton milozähler = new JButton("+1");
  Font zählerfont = new Font("Calibri", Font.PLAIN, 90);
  milozähler.setFont(zählerfont);
  milozähler.addActionListener(new zählerListener());
  frame.getContentPane().add(BorderLayout.CENTER, milozähler);

  JPanel panel = new JPanel();
  frame.getContentPane().add(BorderLayout.SOUTH, panel);

  NumberField anzahlminuten = new NumberField();
  anzahlminuten.setDouble(0);
  panel.add(BorderLayout.WEST, anzahlminuten);

  frame.setSize(480,800);
  frame.setVisible(true);
  
  JLabel endzeiger = new JLabel();
  Font endzeigerfont = new Font("Calibri", Font.PLAIN, 30);
  endzeiger.setFont(endzeigerfont);
  
  JButton neustart = new JButton("neustarten");
  neustart.addActionListener(new neustartListener());
  
  JButton weiterfahren = new JButton("weiterfahren");
  weiterfahren.addActionListener(new weiterfahrenListener());

  JButton rechenausloeser = new JButton("berechne milo/min");
  rechenausloeser.addActionListener(new rechenListener());
  panel.add(BorderLayout.CENTER, rechenausloeser);
  
  while (schleiffe == 1) {

   if (rechenbeginner == true) {

    minuten = anzahlminuten.getDouble();
    endwertberechner = miloeinheiten/minuten;
    endwert = Math.round(endwertberechner*100)/100.0;
    ergebnis = String.valueOf(endwert);

    panel.removeAll();
    endzeiger.setText(ergebnis + " milo/min ");
    panel.add(BorderLayout.CENTER,endzeiger);
    
    panel.add(BorderLayout.EAST, neustart);
    panel.add(BorderLayout.EAST, weiterfahren);
    
    rechenbeginner = false;

   }
   
   if (neustarter == true) {

    anzahlminuten.setDouble(0);
    panel.removeAll();
    panel.add(BorderLayout.WEST, anzahlminuten);
    panel.add(BorderLayout.CENTER, rechenausloeser);
    miloeinheiten = 0;
    
    neustarter = false;

   }
   
   if (weiterfahrer == true) {

    anzahlminuten.setDouble(0);
    panel.removeAll();
    panel.add(BorderLayout.WEST, anzahlminuten);
    panel.add(BorderLayout.CENTER, rechenausloeser);
    
    weiterfahrer = false;

   }
   
   panel.repaint();

  }

 }

 public class zählerListener implements ActionListener {

  public void actionPerformed(ActionEvent event) {

   miloeinheiten++;

  }

 }
 
 public class rechenListener implements ActionListener {

  public void actionPerformed(ActionEvent event) {

   rechenbeginner = true;

  }

 }
 
 public class neustartListener implements ActionListener {

  public void actionPerformed(ActionEvent event) {

   neustarter = true;

  }

 }
 
 public class weiterfahrenListener implements ActionListener {

  public void actionPerformed(ActionEvent event) {

   weiterfahrer = true;

  }

 }

}

danke schon im voraus :)
 

irgendjemand

Top Contributor
aua ...
convetions nicht eingehalten und vier mal eine innere klasse für einen actionlistener ? junge was soll das denn werden ? OOP hast du scheinbar noch nie gehört oder ?


zum problem

das problem ist das der layout-manager das nicht bekommt ...

du musst nach dem verändern deines JFrame auf dieses "revalidate()" und "update(Graphics)" callen ... ergo : JFrame sollte außerhalb deiner methode sichtbar sein ...

ansonsten : ziemlich grausig
 

Marco13

Top Contributor
update(Graphics) von Hand aufrufen zu wollen ist auch grausig. Wohlgemerkt: AUCH. Der Code ist wirklich ziemlich häßlich. Vermutlich würde es schon helfen, das
frame.setSize(480,800);
frame.setVisible(true);
GANZ am Ende zu machen (wenn alles zum Frame hinzugefügt wurde) aber... dieses Konstrukt mir der while-Schleife und remove und alles... das wird sofort noch zu anderen Problemen führen...
 

irgendjemand

Top Contributor
gut ... ob nun update(Graphics) selbst callen oder von repaint() machen lassen ...
ist an sich kein unterschied so lange keine paint-irgendwas methode überschrieben wurde was ja hier nicht der fall ist
 
B

Beni

Gast
Die Endlosschleife
Code:
while( schlieffe == 1)
würde ich dringend löschen. Die Inhalte der einzelnen
Code:
if
s kannst du auch direkt in die ActionListener schreiben (oder in eine Methode, welche von den ActionListenern aufgerufen wird).

P.S. ich finde die inneren Klassen als ActionListeners nicht so schlecht, es gibt wesentlich schlimmere Lösungen.
 
O

oODARIOo2

Gast
danke für eure antworten, trotz meinem hässlichen aufbau :D hat funktioniert.
und ja ich bin mir selber bewusst wie kacke das geschrieben ist aber ich wollte mal das gelernte irgendwie in die tat umsetzen um es zu verfestigen bevor ich weiterlerne :)
 

irgendjemand

Top Contributor
tonnen von anonymen klassen ist aber auch nicht gerade der beste stil ... schon schlimm genug das man sowas auch immer wieder in der SE-api findet
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
K Koordinaten von Swing Komponenten Java Basics - Anfänger-Themen 2
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
M Bei Swing Komponenten die Farbe ändern? Java Basics - Anfänger-Themen 12
S Benennung von Komponenten bei Swing? Java Basics - Anfänger-Themen 8
J Problem mit Swing-Komponenten Java Basics - Anfänger-Themen 13
M wie kombiniere ich grafik und swing-komponenten Java Basics - Anfänger-Themen 16
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
B Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben