Swing eigenen Modalen JDialog

Pacman92

Mitglied
Hallo,

ich habe ein Problem mit Java. Ich wollte einen eigen JDialog machen. Ich habe jetzt folgenden Fall:

[Java]
if(btanummer.length() < 6)
{
bta_man = new ZeichneBtaEingabe();
bta_man.setModalityType(Dialog.DEFAULT_MODALITY_TYPE);
bta_man.zeichnen(anzahl_ordner - 1);
}
[/Java]
Wenn ein bestimmter Fall eingetreten ist, soll das Programm mit der Weiterbearbeitung der Daten solange warten bis ich das ergebniss von dem Dialog habe:
[Java]
public class ZeichneBtaEingabe extends JDialog{
//Definition der Variablen
private JFrame frame;
private JLabel lbl_bta;
private JTextField txt_bta;
private DrawPanel bildbox;
private JButton btn_links, btn_rechts, btn_ok;
private JScrollPane bildrahmen;
private int ordner;
private int aktuelles_bild = 0;
private String btanummer = "0";

/**
* Zeichnet das Menü
*/
public void zeichnen(int ordner)
{
this.ordner = ordner;

// Frame erstellen
frame = new JFrame("Bitte Bta-Nummer eingeben");
frame.setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 250);
frame.setLocationRelativeTo(null);

//Erzeugen des Tabellenlayouts
double border = 5;
double size[][] =
{{border, 0.30,TableLayout.FILL , 0.3, border}, // Spalten
{border, 20, TableLayout.FILL, 20 ,border}}; // Reihen
Container container = frame.getContentPane();
container.setLayout(new TableLayout(size));

///////////////////////////////////
//Zeichnen der einzelnen Elemnte//
/////////////////////////////////
//Zeile Eingabe der Bta-Nummer
lbl_bta = new JLabel("Bta-Nummer:");
container.add(lbl_bta, "1,1,r,c");
txt_bta = new JTextField(10);
container.add(txt_bta, "2,1,f,c");
btn_ok = new JButton("ok");
container.add(btn_ok, "3,1,f,c");

//Zeichnen des Bild Containers
bildbox = new DrawPanel();
//Scroll panel
bildrahmen = new JScrollPane(bildbox);
JScrollBar vbar = bildrahmen.getVerticalScrollBar();
vbar.setUnitIncrement(50);
JScrollBar hbar = bildrahmen.getHorizontalScrollBar();
hbar.setUnitIncrement(50);
container.add(bildrahmen, "1,2,3,2,f,f");
//Buttons
btn_links = new JButton("zurück");
btn_links.addActionListener(new BtnZurueckKlick());
container.add(btn_links, "1,3,l,c");
btn_rechts = new JButton("vor");
btn_rechts.addActionListener(new BtnVorKlick());
container.add(btn_rechts, "3,3,r,c");
//Laden des Bildes
try {
bild_anzeigen(aktuelles_bild, ordner);
} catch (IOException e) {
// TODO Funktion zum löschen einrichten
e.printStackTrace();
}

frame.setVisible(true);
}
[/code]
Er wartet aber nicht mit der Ausführung....

Schonmal danke für eure Hilfe ....
 
Deine Klasse ZeichneBtaEingabe erbt zwar von JDialog nutzt aber nichts davon.
Zusätzlich erzeugst Du noch innerhalb einer Methode eine Frame - merkwürdig.
Ausserdem wird in Deinem Code nicht ersichtlich wann worauf gewartet werden soll
 
Ich dachte mir schon das ich da ein Fehler habe, hast du eine gute Anleitung wie man sich richtig einen eigenen Dialog zusammenstellen kann??

Wäre super von dir ....
 
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class DialogDemo extends JFrame {
	private MyDialog dialog;
	private JLabel label;
	
	public DialogDemo() {
		dialog = new MyDialog(this);
		JButton button = new JButton("Mach");
		label = new JLabel("sdf");
		this.getContentPane().add(label, BorderLayout.CENTER);
		this.getContentPane().add(button, BorderLayout.SOUTH);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				label.setText("Dialog wird angezeigt");
				dialog.setVisible(true);
				label.setText("Dialog ist weg!!");
			}
		});
	}
	
	class MyDialog extends JDialog {
		public MyDialog(JFrame owner) {
			super(owner, true); //modaler Dialog mit Frame als owner
			JButton button = new JButton("OK");
			this.getContentPane().add(new JLabel("<html>Ich mach erst weiter, wenn OK gedrückt wird</html>", JLabel.CENTER), BorderLayout.CENTER);
			this.getContentPane().add(button, BorderLayout.SOUTH);
			this.setBounds(0, 0, 150, 100);
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					MyDialog.this.dispose();
				}
			});
		}
	}
	
	public static void main(String[] args) {
		JFrame frame = new DialogDemo();
		frame.setBounds(0, 0, 500, 300);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
Hallo,

schonmal danke an alle. Ich habe jetzt nur noch ein kleines Problem.... Wie kann ich einen Wert aus den Dialog zurückgeben an die Form aus der ich sie aufgerufen habe ...
 
Deiner Dialogklasse eine getWasAuchImmer() Methode verpassen, die den gewünschten Wert zurückliefert. Dann kann jede Klasse bzw. jedes Objekt, welches eine Referenz auf den Dialog besitzt den Wert auslesen.
 

Neue Themen


Zurück
Oben