Swing eigenen Dialog erstellen

  • Themenstarter Themenstarter nvd-bauernjunge
  • Beginndatum Beginndatum
N

nvd-bauernjunge

Gast
Hallo zusammen,

bezüglich eines Programms muss ich in Java einen Dialog erstellen, der etwas anzeigt wie "Please wait while converting..."
Mein Problem ist nun, dass es nicht einer der Standartdialoge sein soll mit vorgegebenen Buttons oder so.
Einfach nur der Text, ohne Button etc.
Allerdings weiß ich nicht, wie ich so ein Fenster in mein bisheriges Programm implementiere, aufrufe und wieder schließen lasse.
In C# dank VS wüsst ich es =)
Sollte ich eine weitere Klasse erstellen, die ein weiteres Fenster öffnet? Im Hintergrund soll das Programm weiter arbeiten, nach Abschluss der Arbeit das Fenster schließen.
Es ist sicher nicht schwer, einen kleinen Dialog, der nur mit Text bestückt ist zu entwickeln, aber mir fehlt der Ansatz, wie es am besten ist / überhaupt geht, einen eigenen Dialog zu erstellen.

Vielen, vielen Dank schonmal!!

Daniel
 
Moin,

Mein Problem ist nun, dass es nicht einer der Standartdialoge sein soll mit vorgegebenen Buttons oder so.
Einfach nur der Text, ohne Button etc.
Sollte ich eine weitere Klasse erstellen, die ein weiteres Fenster öffnet? Im Hintergrund soll das Programm weiter arbeiten, nach Abschluss der Arbeit das Fenster schließen.
Es ist sicher nicht schwer, einen kleinen Dialog, der nur mit Text bestückt ist zu entwickeln, aber mir fehlt der Ansatz, wie es am besten ist / überhaupt geht, einen eigenen Dialog zu erstellen.

Wenn ich Dich richtig verstehe, dann musst Du Dir nur eine eigene Klasse ("myDialog") bauen, die von JDialog abgeleitet ist. Diese kannst Du dann nach Belieben ausgestalten (Rahmen, Button etc.)

Allerdings weiß ich nicht, wie ich so ein Fenster in mein bisheriges Programm implementiere, aufrufe und wieder schließen lasse.
mit "myDialog.setVisible( true )" und "myDialog.dispose()" 😉

Gruß
Klaus
 
Es gibt mehrere Möglichkeiten!
Du kannst selber einen erstellen, einfaches Beispiel:
Java:
javax.swing.JDialog dialog = new javax.swing.JDialog();
dialog.setTitle("My Title");
javax.swing.JLabel lab= new javax.swing.JLabel("My message");
dialog.add(lab);
dialog.setSize(400, 100);
dialog.setVisible(true);  //Dialog anzeigen
.
.
.
dialog.setVisible(false); //Dialog an anderer Stelle ausblenden

Du kannst Dir auch einen Dialog in einer Java IDE zusammenklicken, es ist sehr Einfach.
Oder Du nimmst den Standard MessageDialog von Java. Ich benutze immer das letzte.

Gruß Vladimir
 
Zuletzt bearbeitet:
Halli Hallo!

Vielen Dank, dass ist tatsächlich einfacher, als mit dem VS Designer einen Dialog zu erstellen 😀 bzw. geht schneller.
Aber ein Problemchen habe ich bei der Sache noch...
Durch den Dialog kann man durch schauen. Er ist quasi wie ein Fensterrahmen. Liegt das daran, dass der Prozess im Hintergrund schneller durch ist, als der Dialog mit Text aufgebaut werden kann?
Java:
public class ConvertingDialog
{
	static JDialog dialog = new JDialog();
	public void createDialog() 
	{
		
		dialog.setTitle("Attention");
		JLabel message=new JLabel("Please wait while converting is running!");
		message.setBounds(0, 30, 400, 25);
		dialog.add(message);
		dialog.setBounds(200, 200, 400, 200);
	}
	public static void setDialogVisible()
	{
		ConvertingDialog dialogWindow = new ConvertingDialog();
		dialogWindow.createDialog();
		dialog.setVisible(true);
	}
	public static void setDialogInvisible()
	{
		dialog.setVisible(false);		
	}
}
[/Java]

In den Klassen, die die Konvertierung starten (ja, es handelt sich hierbei um einen Dateikonverter) wird er dann aufgerufen:
[code=Java]ConvertingDialog.setDialogVisible();[/Java]
und weg damit:
[Java]ConvertingDialog.setDialogInvisible();

Wie gesagt, es erscheint nur die Titelleiste, der Rahmen des Dialogs und durch den eigentlichen Inhalt kann man durchschauen auf das Programm...
 
GUten Morgen zusammen,
mal so zum Verständnis für Threads eine Frage.
Zur zeit läuft das Programm so ab:
Gui wird erstellt, Benutzer ließt Dateien ein, Benutzer kann nochmal Dateien in einer Übersicht selektieren, Benutzer wählt Pfad der Ausgabe, Export beginnt.
Ab da wird es spannend.
Eine Klasse zur Konvertierung enthält Methoden zum Konvertieren der gewählten Dateien, eine weitere, die die konvertierte Datei schreibt.
Die Methode zum Konvertieren ruft zu Begin die Methode für die Anzeige des Dialogs auf (weitere Klasse, mit Methoden zum Erstellen, Anzeigen und Schließen des Dialogs).
Darauf wird die Konvertierung gestartet.
An welchem Punkt muss nun ein extra Thread erstellt werden?
Begin der Methode Konvertierung (also noch vor 'zeige Dialog')?
Direkt nach Zeigen des Dialogs?
Sieht der Aufbau dann so aus:?
Java:
public class ConvertPropToXls  implements Runnable
{
public void convertFile(String tralalala)
{
DialogKlasse.zeigeDialog();
new Thread(this).start();
}
public void run()
{
//Konvertierungsgedöns
}
}
 
Ja das ist OK! Der Ansatz ist Richtig!
Der Benutzer bestätigt den Export und dann sollte der Export in eigenständigen Thread ablaufen.
Den Exportstatus würde ich nicht über eine Meldung anzeigen, sonder über ein Fortschrittsbalkender Beispielsweise unten angezeigt, der Benutzer darf aber weiterhin mit dem Programm arbeiten.

Oder Du zeigst den Dialog mit einem Fortschrittsbalken an, und sperst alles bis der Vorgang abgeschlossen wurde.

Es gibt weiterhin viele Lösungsmöglichkeiten, Du musst dich für eine entscheiden.
Gruß Vladimir
 
Zuletzt bearbeitet:

Zurück
Oben