Swing Fortschrittsanzeige im Dialog ohne Fortschrittsbalken und Abbruchoption

chaostheory

Bekanntes Mitglied
Hallo,
ich habe ein funktionierendes Programm, dass Daten steganographisch in Bildern verstecken kann. Dies kann einige Sekunden dauern und ich würde gerne einen Dialog anzeigen, der sich bei Abschluss der Operation schließt.
Es gibt zwei Status: Erst die Codierung und dann das Speichern der einzelnen Pixel im Bild.
Einen Fortschritt während der Codierung auszugeben wäre möglich, aber sehr umständlich. Allerdings wird die gesamte Bildspeicherung in einer Methode aus Javas ImageIO übernommen, also kann ich dort auf keinen Fall einen Fortschritt anzeigen. Deswegen lässt sich auch eine Abbruchoperation ab dem zweiten Schritt nicht mehr umsetzen.

Ich suche also einen Dialog, der nur einen wechselnden Text anzeigt, z.B. erst "Codiere Pixel" und dann "Speichere Bild" und den ich nach Abschluss schließen kann. Ohne Fortschrittsbalken und ohne Abbruchbutton.
 

chaostheory

Bekanntes Mitglied
How to Make Dialogs (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
Sowas einfaches kriegst du mit 2 Zeilen hin
Java:
JLabel statusLabel=new JLabel();
JOptionPane.showMessageDialog(parentFrame,label,"Titel des Dialogs",JOptionPane.PLAIN_MESSAGE);
//In einem Thread dann statusLabel.setText() in einem EventQueue.invokeLater Block aufrufen
Das kenne ich auch, aber wie willst du den Text ändern? Und wie willst du den Dialog bei Abschluss automatisch schließen? Das geht nicht.
 

bERt0r

Top Contributor
Also ich sage das geht:
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;


public class DialogDemo extends JFrame
{
	
	private JPanel contentPane;
	private JButton btnStart;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						DialogDemo frame = new DialogDemo();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public DialogDemo()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		btnStart = new JButton("Start");
		btnStart.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				final JLabel statusLabel=new JLabel();
				Thread t=new Thread()
				{
					@Override
					public void run()
					{
						for(int i=0;i<1000;i++)
						{
							statusLabel.setText("Status "+i);
							try
							{
								Thread.sleep(10);
							} catch (InterruptedException e)
							{
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						System.out.println("Thread fertig");
						Container optionDialog=statusLabel.getTopLevelAncestor();
						if(optionDialog!=null)
						{
							optionDialog.setVisible(false);
						}
					}
				};
				t.start();
				JOptionPane.showMessageDialog(DialogDemo.this,statusLabel,"Titel des Dialogs",JOptionPane.PLAIN_MESSAGE);
			}
		});
		contentPane.add(btnStart, BorderLayout.SOUTH);
	}
	
}
Du kannst dir natürlich auch deinen eigenen Dialog basteln wenn dich der OK button stört. Vom Prinzip her ist das aber das selbe - es wäre sogar übersichtlicher.
 

chaostheory

Bekanntes Mitglied
@bERt0r: Tatsache, wieder was gelernt :) Danke!
Der OK-Button gefällt mir ganz gut, dann kann man den Dialog auch wegklicken. Welche Klasse wäre denn gut für einen eigenen Dialog geeignet? Dann könnte ich eventuell statt "OK" so etwas wie "Verstecken" auf den Button schreiben.
 

chaostheory

Bekanntes Mitglied
So zeigt es einen Dialog mit einem Verstecken-Knopf und einem änderbaren Label:
Java:
JOptionPane.showOptionDialog(frame, label, "Mein Title", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, new String[] {"Verstecken"}, "Verstecken");
Nur kann ich jetzt während der Laufzeit nicht mehr das Hauptfenster benutzen, selbst wenn ich null als parentComponent übergebe.

//edit:
So kann man jetzt auch das Hauptfenster bei geöffnetem Dialog nutzen:
Java:
final JOptionPane optionPane = new JOptionPane(label,
				JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION,
				null, new String[] { "Verstecken" }, "Verstecken");
		final JDialog dialog = new JDialog(frame, "My title", false);
		optionPane.addPropertyChangeListener(new PropertyChangeListener() {
			public void propertyChange(PropertyChangeEvent e) {
				String prop = e.getPropertyName();

				if (dialog.isVisible() && (e.getSource() == optionPane)
						&& (prop.equals(JOptionPane.VALUE_PROPERTY))) {
					// If you were going to check something
					// before closing the window, you'd do
					// it here.
					dialog.setVisible(false);
				}
			}
        	    });
        dialog.setContentPane(optionPane);
        dialog.pack();
        dialog.setVisible(true);
 
Zuletzt bearbeitet:
S

SlaterB

Gast
wenn nicht modal, also blockierend, dann kann es letztlich auch ein zweites JFrame sein, aber ist ja gut wenn es erst einmal läuft,
ich setze Thema auf Erledigt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Programmabsturz durch Fortschrittsanzeige AWT, Swing, JavaFX & SWT 3
lin Bild laden - Fortschrittsanzeige AWT, Swing, JavaFX & SWT 2
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
melaniemueller Confirmation Dialog erstellen AWT, Swing, JavaFX & SWT 18
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
H Eigener Dialog mit Rückgabe -> Warten auf Button AWT, Swing, JavaFX & SWT 3
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
E Swing Dialog modal aufrufen AWT, Swing, JavaFX & SWT 2
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
J JavaFX Dialog - Style AWT, Swing, JavaFX & SWT 6
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
D Neues Dialog Mittig auf dem Bildschirm AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
W SWT Dialog richtig schließen? AWT, Swing, JavaFX & SWT 0
M Benutzer-Dialog ohne System.in/out AWT, Swing, JavaFX & SWT 2
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
TheWhiteShadow SWT Dialog Titel setzen AWT, Swing, JavaFX & SWT 6
VfL_Freak Darstellungsproblem mit Dialog AWT, Swing, JavaFX & SWT 8
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
G Nebenläufiger Prozess mit Dialog AWT, Swing, JavaFX & SWT 2
M Swing Elemente im Dialog neu "laden". AWT, Swing, JavaFX & SWT 6
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
R DnD in modalem Dialog AWT, Swing, JavaFX & SWT 4
I Dialog zum Speichern? AWT, Swing, JavaFX & SWT 16
M Dialog soll etwas an "Oberklasse" übergeben AWT, Swing, JavaFX & SWT 3
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
hdi Swing Bzgl JFrame & modaler Dialog AWT, Swing, JavaFX & SWT 6
N Modaler Dialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 8
J SWT Dialog in Dialog automatisch öffnen AWT, Swing, JavaFX & SWT 19
H Confirm Dialog erweitern AWT, Swing, JavaFX & SWT 5
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
B Gestaltung eines Optionen-Dialog AWT, Swing, JavaFX & SWT 16
P Swing Option zeitbeschränkt in modalem Dialog anbieten AWT, Swing, JavaFX & SWT 2
X Einem JFrame einen Dialog als Parent setzen. Möglich? AWT, Swing, JavaFX & SWT 4
L AWT Window, Dialog und verschiedene Betriebssysteme AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
A Swing Delay (1-4 Sek.) bei JTable und Dialog beim ersten Ausführen AWT, Swing, JavaFX & SWT 3
P Swing modaler dialog AWT, Swing, JavaFX & SWT 3
P SWT Dialog AWT, Swing, JavaFX & SWT 3
O Login Dialog zweimal öffnen AWT, Swing, JavaFX & SWT 2
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
N Swing eigenen Dialog erstellen AWT, Swing, JavaFX & SWT 8
C Swing Fehlermeldung in einem Dialog anzeigen AWT, Swing, JavaFX & SWT 2
L Dialog mit Dauerschleifen AWT, Swing, JavaFX & SWT 4
K SWT TableViewer refresh() im Dialog AWT, Swing, JavaFX & SWT 2
Semox Swing FileSaveAs Dialog Problem AWT, Swing, JavaFX & SWT 14
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
B Dialog aus DB Struktur erstellen AWT, Swing, JavaFX & SWT 4
D URL Dialog AWT, Swing, JavaFX & SWT 2
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
J nicht weckklickbarer dialog AWT, Swing, JavaFX & SWT 15
S Frame - Panel - Dialog rückgabe wert AWT, Swing, JavaFX & SWT 5
D Swing Dialog schließen verhindern bei Fehleingabe AWT, Swing, JavaFX & SWT 2
F JColorChooser NICHT im Dialog AWT, Swing, JavaFX & SWT 12
C Swing Mit jTree ein Ordneröffnen Dialog machen? Und Ordner Inhalt auslesen? AWT, Swing, JavaFX & SWT 4
N SWT Dialog mit swt-widgets AWT, Swing, JavaFX & SWT 5
L AWT Daten vom Dialog an Frame senden AWT, Swing, JavaFX & SWT 3
Lurch Swing Dialog erbt von Dialog? AWT, Swing, JavaFX & SWT 28
eQuest Durchsuchen Dialog AWT, Swing, JavaFX & SWT 6
D ausgewählte Textstellen scheinen durch Dialog durch AWT, Swing, JavaFX & SWT 7
S Modalen Dialog nachbauen..? AWT, Swing, JavaFX & SWT 4
E Swing Rückgabe eines Wertes aus einem Dialog zu einem Dialog AWT, Swing, JavaFX & SWT 4
W Swing Problem beim Passwort Dialog AWT, Swing, JavaFX & SWT 4
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
C requestFocus bei modalem Dialog AWT, Swing, JavaFX & SWT 3
5 Mod.Dialog reagiert n.auf ActionListener seiner Komponenten AWT, Swing, JavaFX & SWT 4
A Bitte warten Dialog AWT, Swing, JavaFX & SWT 4
G SWT Dialog AWT, Swing, JavaFX & SWT 7
GilbertGrape EXIT_ON_CLOSE in Dialog AWT, Swing, JavaFX & SWT 3
T JFileChooser: beim Save Dialog einen Dateinamen vorgeben? AWT, Swing, JavaFX & SWT 6
K Druck-Dialog AWT, Swing, JavaFX & SWT 4
D JTable nach Öffnen-Dialog umbaun AWT, Swing, JavaFX & SWT 5
K Dialog schliesst sich nicht. Warum? AWT, Swing, JavaFX & SWT 11
K Automatisch einen Dialog schliessen AWT, Swing, JavaFX & SWT 15
J dialog AWT, Swing, JavaFX & SWT 5
H nicht modaler Dialog verdeckt modalen Dialog AWT, Swing, JavaFX & SWT 5
S Probl. bei Java Programm - Dialog zum Bearbeiten von Bildern AWT, Swing, JavaFX & SWT 4
W Wie macht man so nen Settings Dialog AWT, Swing, JavaFX & SWT 2
K Datei öffnen Dialog AWT, Swing, JavaFX & SWT 5
K Dialog aus einem Dialog öffnen AWT, Swing, JavaFX & SWT 4
S preference dialog öffnen AWT, Swing, JavaFX & SWT 8
spacegaier Fehler beim Aufrufen von Dialog aus ActionListener AWT, Swing, JavaFX & SWT 12
B Confirmation Dialog AWT, Swing, JavaFX & SWT 2
T DIALOG für BEENDEN AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben