Swing Balken "wachsen lassen"

Micha2903

Mitglied
Hallo allerseits.

Ich bin recht neu was Java angeht. So einige Dinga habe ich schon hin bekommen. Nun versuche ich folgendes:

Ich habe eine Excel Tabelle. In dieser Tabelle befinden sich Werte in zwei Zellen. Bei den Werten handelt es sich um einfache Ganzzahlen bis zu einer maximalien größe von 15.000.000. Mittles jxl lese ich die beiden Zellen aus, lege ihren Inhalt in einem String ab und parse diesen dann zu double.

Bei den zwei Werten handelt es sich um einen Ist und einen Soll Wert. Beide möchte ich nun grafisch mit einem Balken darstellen.

Ausgelöst soll das ganze (vorerst) durch einen Button werden. Sprich: man klickt auf den Button, jxl holt die Werte aus der Excel ab, die Werte werden abgelegt und geparst, dann über eine Verhältnissgleichung wird die Balkengröße (in diesem Fall breite) berechnet und dann die Balken gezeichnet mit setBounds und add.

Das funktioniert auch wunderbar. Nun wollte ich es so gestallten, dass der Istbalken, nicht einfach nur "dahingeklatscht" wird, sondern sich quasi wie ein Ladebalken immer mehr vergrößert, bis er seine Zielgröße erreicht hat.

Daran scheitere ich aber derzeit. Ich habe das setBounds in eine Schleife gepackt und dazu ein Thread.sleep(10); damit man das ganze auch wahrnehmbar verfolgen kann. Mit in die Schleife habe ich alle mögichen Varianten von .paint() und .repaint genommen, um eben den Verlauf des Balkens sichbat zu machen. Aber es will mir einfach nicht gelingen. Ich sehe, dass das Programm in der Schleife hockt, aber es wird einfach nichts neu gezeichnet. Erst, wenn die Schleife wieder verlassen wird. Dann aber gleich wieder in voller größe.

Hat jemand eine Idee, wie ich da am besten vorgehen könnte?

Achja, als Balken verwende ich derzeit noch JButtons, das erschien mir auf die schnelle am einfachsten und zugleich hübschesten.
 

Micha2903

Mitglied
So, nachdem ich obiges nun alles wunderbar hinbekommen habe, habe ich nun ein anderes aber ähnliches Problem.

Ich habe mir eine Uhr erstellt. Also ein einfaches Textfeld, in welches per ausgelagertem Thread alle paar Milisekunden die Systemuhrzeit ausgelesen und ins Textfeld eingefügt wird.

Nun wechsel ich während dem Programmverlauf auch mal den Frame, bzw. komme generell in die Situation, dass die uhr mal ausgeblendet ist.

Nun habe ich das Problem, dass wenn ich die Uhr wieder einblenden lasse, man immer für den Bruchteil einer Sekunde die Uhrzeit sieht (sie geht sekundengenau), welche man beim Ausblenden zu sehen bekommen hat.

Was kann ich dagegen tun und bekomme dabei einen möglichst flüssigen Übergang hin, ohne, dass es abgehackt wirkt.

Danke für eventuell kommende Vor- und / oder Ratschläge.
 
G

Gelöschtes Mitglied 9001

Gast
Nun habe ich das Problem, dass wenn ich die Uhr wieder einblenden lasse, man immer für den Bruchteil einer Sekunde die Uhrzeit sieht (sie geht sekundengenau), welche man beim Ausblenden zu sehen bekommen hat.

Die Uhr sollte nicht nur alle paar Millisekunden die Systemzeit auslesen und anzeigen, sondern die Systemzeit auch dann auslesen, wenn sie eingeblendet wird. Mal angenommen, Du hast eine Methode "readTime()", dann
Entweder im Uhr-Konstruktor
Java:
   addComponentListener(new ComponentAdapter() {
       void componentShown(ComponentEvent e) {
              readTime();
              repaint();
       }
    }

oder setVisible der Uhr-Komponente überschreiben
Java:
@Override
void setVisible(boolean aFlag) {
    readTime();
    super.setVisible(aFlag);
}
 

Quaxli

Top Contributor
Wenn Du das Updaten Deiner GUI wie schon von Michael... vorgeschlagen in einen eigenen Thread auslagerst hast Du keine Probleme und es ist nicht notwendig irgendwelche Methoden zu überschreiben.

Da ich gerade mal etwa Ablenkung beraucht habe, habe ich mal ein kleines Beispiel zusammen geklappert. :D

Java:
import javax.swing.*;
import java.util.*;
import java.awt.*;

public class SecondDisplay extends JPanel implements Runnable{

	private static final long	serialVersionUID	= 1L;
	
	JFrame frame;
	JProgressBar second;
	
	public static void main (String[] args){
		new SecondDisplay();
	}

	public SecondDisplay(){
		
		second = new JProgressBar(0,59);
		second.setStringPainted(true);
		setLayout(new BorderLayout(5,5));
		add(second,BorderLayout.CENTER);
		setPreferredSize(new Dimension(200,50));
		
		frame = new JFrame("Sekundenanzeige");
		frame.setLocation(100,100);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(this);
		frame.pack();
		frame.setVisible(true);
		
		Thread th = new Thread(this);
		th.start();
	}
	
	public void run() {
	
		GregorianCalendar gc = new GregorianCalendar();
		
		while(frame.isVisible()){
			
			gc.setTimeInMillis(System.currentTimeMillis());
			int sec = gc.get(Calendar.SECOND);
			second.setValue(sec);
			second.setString(Integer.toString(sec));
			
			try {
				Thread.sleep(900);
			} catch (InterruptedException e) {}
			frame.repaint();
		}
		
	}
	
}

Großartig kommeniert habe ich es nicht. Ich könnte jetzt sagen, daß ist damit Du auch was lernst...:D
Wenn Du Fragen hast, schreib' die hier rein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
K 3d balken der sich dreht AWT, Swing, JavaFX & SWT 5
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
G JFreechart Balken einfärben AWT, Swing, JavaFX & SWT 6
P 3D Balken AWT, Swing, JavaFX & SWT 7
B Jlabel erben und Balken zeichnen AWT, Swing, JavaFX & SWT 2
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
J Gantt-/Balken-/Netzplan - Diagramme AWT, Swing, JavaFX & SWT 8
J Balken von ScrollPane immer unten AWT, Swing, JavaFX & SWT 6
C Titel-Balken höhe?! AWT, Swing, JavaFX & SWT 4
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Tippster JavaFX Scene neu berechnen lassen AWT, Swing, JavaFX & SWT 5
B AWT Rechteck abnehmen lassen AWT, Swing, JavaFX & SWT 9
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
K Swing Buttons erst blinken lassen und dann abfragen, ob sie gedrückt worden sind AWT, Swing, JavaFX & SWT 2
Lukas2904 Swing ID von WLAN Kamera anzeigen lassen. AWT, Swing, JavaFX & SWT 2
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
C JavaFX Veränderungen in Scenebuilder in Eclipse als Quellcode anzeigen lassen AWT, Swing, JavaFX & SWT 11
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
E Aktuelle Uhrzeit auf jeder Stage anzeigen lassen (JavaFX) AWT, Swing, JavaFX & SWT 2
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
J JavaFX ImageView rotieren lassen AWT, Swing, JavaFX & SWT 1
L Suchergebnisse variabel mit Button anzeigen lassen AWT, Swing, JavaFX & SWT 3
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
D JavaFX Fläche auf Knopfdruck blinken lassen AWT, Swing, JavaFX & SWT 3
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
T Swing 2 Thread.sleep parallel laufen lassen AWT, Swing, JavaFX & SWT 4
Z Ping Pong Ball abprallen lassen AWT, Swing, JavaFX & SWT 1
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
A JLabel hochzählen lassen. AWT, Swing, JavaFX & SWT 6
K Pfad mit JFileChooser ausgeben lassen AWT, Swing, JavaFX & SWT 7
B Swing JTextField mit Bildschirmauflösung skalieren lassen. AWT, Swing, JavaFX & SWT 4
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
F JButtons erstellen lassen mit unterschiedlichen Funktionen AWT, Swing, JavaFX & SWT 3
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
X Eingabe in einem Ausgabefeld anzeigen lassen AWT, Swing, JavaFX & SWT 11
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
T Kleines Infofenster einblenen lassen AWT, Swing, JavaFX & SWT 3
J JTextField auslesen lassen AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
M Datenbank in Jtable mit einem JButton anzeigen lassen AWT, Swing, JavaFX & SWT 4
R Swing Wie kann man Internal Frames automatisch ausrichten lassen? AWT, Swing, JavaFX & SWT 3
N Custom JButton Feld aus Parent lesen lassen AWT, Swing, JavaFX & SWT 11
L Gradient Hintergrund malen und durchscheinen lassen AWT, Swing, JavaFX & SWT 8
B Swing Komponente an Position eines Objektes ausgeben lassen AWT, Swing, JavaFX & SWT 3
C Schleife auf Mausklick warten lassen AWT, Swing, JavaFX & SWT 6
H messageDialog nur einmal anzeigen lassen? AWT, Swing, JavaFX & SWT 2
E Threads Ausgaben in GUI anzeigen lassen AWT, Swing, JavaFX & SWT 14
E JFreeChart: Timeseries-Chart und Area-Chart "überlappen" lassen AWT, Swing, JavaFX & SWT 6
C Kugel diagonal laufen lassen AWT, Swing, JavaFX & SWT 31
E Rauten per Swing zeichnen lassen AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
A ComponentController, wie logische vergleiche einfliessen lassen? AWT, Swing, JavaFX & SWT 6
S Swing JLabel ressourcenschonend blinken lassen? AWT, Swing, JavaFX & SWT 3
M SWT YouTubeVideo in Java Application anzeigen lassen AWT, Swing, JavaFX & SWT 6
B AWT Mit TextField Zahlen einlesen lassen AWT, Swing, JavaFX & SWT 34
Zettelkasten Cursor nicht anzeigen lassen AWT, Swing, JavaFX & SWT 2
S Metal-Buttons so aussehen lassen wie Nimbus Buttons? AWT, Swing, JavaFX & SWT 3
A JTable- sortieren lassen AWT, Swing, JavaFX & SWT 10
B JSlider - Wert am Mouszeiger anzeigen lassen AWT, Swing, JavaFX & SWT 6
J Fenster singalisieren lassen AWT, Swing, JavaFX & SWT 2
J Wort aus Arrayliste selektieren und ID anzeigen lassen AWT, Swing, JavaFX & SWT 6
L JLabel wie TableHeader aussehen lassen AWT, Swing, JavaFX & SWT 7
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
S Menü Item "abhaken" lassen vom Benutzer AWT, Swing, JavaFX & SWT 2
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
DARK_ZERATO2 leerstellen zählen und aufüllen lassen AWT, Swing, JavaFX & SWT 9
B ArrayList im JTextArea anzeigen lassen AWT, Swing, JavaFX & SWT 30
S Threads in einen Frame zeichnen lassen (Paint()?!) AWT, Swing, JavaFX & SWT 5
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
P Textfelder in einem Frame lassen sich nicht editieren AWT, Swing, JavaFX & SWT 3
B JPG in einem Container anzeigen lassen AWT, Swing, JavaFX & SWT 3
E Eine Seite eines Frames variabel anpassen lassen? AWT, Swing, JavaFX & SWT 10
D Wie mehrere Grafiken auf JPanel anzeigen lassen? (Observer pattern?) AWT, Swing, JavaFX & SWT 24
K Programmsymbol (in der Taskleiste) blinken lassen AWT, Swing, JavaFX & SWT 5
E Swing filechooser - nur Netzwerkpfade anzeigen lassen AWT, Swing, JavaFX & SWT 14
B Inhalt von JTextField durch Klick auf JButton in JLabel anzeigen lassen AWT, Swing, JavaFX & SWT 8
PAX Iconified JFrame per Code wieder anzeigen lassen (deiconify) AWT, Swing, JavaFX & SWT 2
G Images in GUI anzeigen lassen AWT, Swing, JavaFX & SWT 2
B zwei JLabels überlappen lassen AWT, Swing, JavaFX & SWT 5
J MouseEvts durch JLabel fallen lassen aber trotzdem Tooltips? AWT, Swing, JavaFX & SWT 5
G JLabel Text 5 sekunden anzeigen lassen AWT, Swing, JavaFX & SWT 2
G panel neu zeichnen lassen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben