eigenes JOptionPane ?

Status
Nicht offen für weitere Antworten.

jottes

Mitglied
Hallo allerseits...
ich kaspere schon seit gestern mit dem JOptionPane herum. Mein Problem damit ist, dass ich gerne zwischen den Buttons (YES_NO_OPTION) mit den Pfeiltasten hin- und her gehen will. Z.Zt. geht das aber (default) nur mit dem Tab. Ich habe darauf versucht über
Code:
getComponents()
an die Buttons zu kommen. Erst bekomme ich zwei Panel, von dem das untere die Buttons enthält. Beim casten bekomme ich dann aber eine Null-Pointer-Exception. Der Gedanke dabei war die Referenzen der Buttons zu bekommen, damit ich einen KeyListener an sie hängen kann und so das hin- und herschalten mit den Pfeiltasten hinzubekommen...

Jetzt habe ich versucht mir eine eigene Component zu basteln (extends JDialog), die ähnliches können soll, wie ein JOptionPane. Dabei habe ich ja explizit die Referenzen auf meinen Ja- und Nein Button und kann da ohne Probleme auch die KeyListener dran machen. Dumm ist nur, dass ich das Sperren aller anderen Threads nicht hinbekomme, so wie das beim JOptionPane der Fall ist.

Hat irgend jemand sich sowas schonmal selber gebaut? :(
 

The_S

Top Contributor
Ich hab zufällig einen etwas älteren Anmeldebildschirm von mir gefunden. Der funktioniert auf die gleiche Weise. Kannst ja n bisschen abschauen ;) .

Code:
package de.egui.dialogs;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginScreen {

	public static final int CANCEL = 0;
	public static final int OK = 1;
	
	private int returnvalue = CANCEL;
	
	private JDialog dialog = null;
	
	private JTextField user = null;
	private JPasswordField pass = null;
	
	private JLabel text = null;
	private JLabel usertext = null;
	private JLabel passtext = null;
	
	private JButton ok = null;
	private JButton cancel = null;
	
	private JPanel mainpane = null;
	private JPanel leftpane = null;
	private JPanel middlepane = null;
	private JPanel downpane = null;
	
	public LoginScreen() {
		this(null);
	}
	
	public LoginScreen(Frame parent) {
		this(parent, "");
	}
	
	public LoginScreen(Frame parent, String text) {
		this(parent, text, "", "");
	}
	
	public LoginScreen(Frame parent, String text, String user, String pass) {
		
		dialog = new JDialog(parent, true);
		
		this.user = new JTextField();
		this.pass = new JPasswordField();
		
		this.text = new JLabel();
		usertext = new JLabel("User:");
		passtext = new JLabel("Password:");
		
		ok = new JButton("OK");
		cancel = new JButton("Cancel");

		mainpane = new JPanel();
		leftpane = new JPanel();
		middlepane = new JPanel();
		downpane = new JPanel();
		
		mainpane.setLayout(new BorderLayout());
		leftpane.setLayout(new GridLayout(0, 1, 0, 3));
		middlepane.setLayout(new BorderLayout());
		
		setText(text);
		setUser(user);
		setPassword(pass);
		
		mainpane.add(middlepane);
		mainpane.add(leftpane, BorderLayout.WEST);
		mainpane.add(downpane, BorderLayout.SOUTH);
		mainpane.add(this.text, BorderLayout.NORTH);
		
		leftpane.add(usertext);
		leftpane.add(passtext);
		
		middlepane.add(this.user);
		middlepane.add(this.pass, BorderLayout.SOUTH);
		
		downpane.add(ok);
		downpane.add(cancel);
		
		dialog.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				returnvalue = CANCEL;
			}
		});
		
		ok.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				returnvalue = OK;
				dialog.dispose();
			}
		});
		
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				returnvalue = CANCEL;
				dialog.dispose();
			}
		});
		
		
		dialog.setContentPane(mainpane);
		dialog.setResizable(false);
	}

	public int showLoginDialog() {
		
		dialog.pack();
		dialog.setSize(new Dimension(dialog.getWidth() < 300 ? 300 : dialog.getWidth(), dialog.getHeight()));
		dialog.setLocationRelativeTo(dialog.getOwner());
		dialog.setVisible(true);
		return returnvalue;
	}
	
	public String getText() {
		return text.getText();
	}
	
	public void setText(String text) {
		this.text.setText(text);
	}
	
	public char[] getPassword() {
		return pass.getPassword();
	}
	
	public void setPassword(String password) {
		pass.setText(password);
	}
	
	public String getUser(){
		return user.getText();
	}
	
	public void setUser(String user) {
		this.user.setText(user);
	}
	
	public void setPasswordText(String str) {
		passtext.setText(str);
	}
	
	public void setUserText(String str) {
		usertext.setText(str);
	}
	
	public void setOKText(String str) {
		ok.setText(str);
	}
	
	public void setCancelText(String str) {
		cancel.setText(str);
	}
	
	public void setTitle(String title) {
		dialog.setTitle(title);
	}
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(400, 300);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		LoginScreen ls = new LoginScreen(frame, "Bitte Passwort eingeben");
		ls.setTitle("Bitte Passwort eingeben");
		System.out.println(ls.showLoginDialog());
		System.exit(0);
	}
}
 

jottes

Mitglied
die ausschlaggebenden Methode war createDialog(). Ein Klasse von JOptionPane erstellen und dann eine Instanz davon anzeigen lassen geht denke ich nur über diesen Weg. Man muss mittels createDialog() diese Instanz "wrappen" und bekommt ein JDialog zurück. Dann kann man sich den JDialog mit setVisible() anzeigen lassen. Jetzt muss ich nur noch die DefaultButton Eigenschaft da raus haben...

danke trotzdem...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
L LookAndFeel Eigenes Design für die Applikation AWT, Swing, JavaFX & SWT 4
L JavaFX als eigenes Objekt AWT, Swing, JavaFX & SWT 3
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
N LookAndFeel Wie kann ich mein eigenes LookAndFeel machen? AWT, Swing, JavaFX & SWT 6
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
J Eigenes Gui/ Look and Feel AWT, Swing, JavaFX & SWT 14
D Eigenes Textfeld AWT, Swing, JavaFX & SWT 8
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
C Eigenes Hintergrundbild einfügen AWT, Swing, JavaFX & SWT 6
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
P Eigenes Textverarbeitungsprogramm AWT, Swing, JavaFX & SWT 4
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
Developer_X LookAndFeel Eigenes Look And Feel erstellen AWT, Swing, JavaFX & SWT 33
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Design-Frage: eigenes Line-Wrapping AWT, Swing, JavaFX & SWT 5
M Swing eigenes StyledDocument AWT, Swing, JavaFX & SWT 2
D eigenes Tablemodel, Zeile löschen ArrayindexOOB excp AWT, Swing, JavaFX & SWT 4
S JTree mit Daten aus Model füllen, eigenes TreeModel (gute Dokumentation des Problems) AWT, Swing, JavaFX & SWT 2
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
M Eigenes ActionEvent / Eigener Listener AWT, Swing, JavaFX & SWT 2
A JTable, eigenes TableModel und dessen Objekte AWT, Swing, JavaFX & SWT 4
G JToolbar gleich als eigenes Fenster öffnen AWT, Swing, JavaFX & SWT 2
G Eigenes ComboBoxModel AWT, Swing, JavaFX & SWT 2
M eigenes DialogFenster AWT, Swing, JavaFX & SWT 4
L Button ändert eigenes Bild und Progressbar-Value nicht AWT, Swing, JavaFX & SWT 6
D Eigenes Tooltip AWT, Swing, JavaFX & SWT 5
G eigenes option pane AWT, Swing, JavaFX & SWT 5
C Eigenes Event AWT, Swing, JavaFX & SWT 8
S Eigenes Package für die GUI? AWT, Swing, JavaFX & SWT 6
P Eigenes Look&Feel schreiben (Tutorials?) AWT, Swing, JavaFX & SWT 6
B Eigenes Events AWT, Swing, JavaFX & SWT 3
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
M JDialog und eigenes Icon AWT, Swing, JavaFX & SWT 10
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
J JOptionPane return bei "Abbrechen" AWT, Swing, JavaFX & SWT 13
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
O Timer in JOptionPane anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
O JOptionPane mit JFileDialog AWT, Swing, JavaFX & SWT 5
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
N Swing Mocken von JOptionPane im JUnit-Test AWT, Swing, JavaFX & SWT 3
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JOptionPane AWT, Swing, JavaFX & SWT 1
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
snipesss Hintergrundbild in JOptionPane.showInputDialog? AWT, Swing, JavaFX & SWT 4
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
A Swing JOptionPane.showConfirmDialog, EventQueue wird weiter abgearbeitet AWT, Swing, JavaFX & SWT 2
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
OnDemand JOptionPane AWT, Swing, JavaFX & SWT 2
B JFrame wie JOptionPane.showMessageDialog() AWT, Swing, JavaFX & SWT 2
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
L Swing JOptionPane Verwirrung AWT, Swing, JavaFX & SWT 13
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
I javascript in javaprogramm JOptionpane -> haengt (embedded Interpreter) AWT, Swing, JavaFX & SWT 2
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
D JOptionPane.QUESTION_MESSAGE Fett darstellen AWT, Swing, JavaFX & SWT 4
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
M Swing Änderungen eines TextFelds und JOptionPane AWT, Swing, JavaFX & SWT 5
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
E Swing setCaretPosition für ein JTextField in einem JOptionPane AWT, Swing, JavaFX & SWT 3
H Swing JOptionPane.showConfirmMessage() wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
R Eingegebenen Text in JOptionPane in andere Klasse weitergeben AWT, Swing, JavaFX & SWT 2
M JOptionPane.showInputDialog abbrechen abfangen? AWT, Swing, JavaFX & SWT 2
Weiti JOptionPane aus einer von JPanel abgeleiteten Klasse aufrufen AWT, Swing, JavaFX & SWT 3
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
G Swing Meldung mit joptionpane information message AWT, Swing, JavaFX & SWT 22
B Swing JOptionPane ohne beep AWT, Swing, JavaFX & SWT 6
A Swing \t im JOptionPane AWT, Swing, JavaFX & SWT 2
G JOptionPane.showConfirmDialog size problem AWT, Swing, JavaFX & SWT 3
S JOptionPane - InitialValue AWT, Swing, JavaFX & SWT 9
S JOptionPane resultat kriegen AWT, Swing, JavaFX & SWT 7
ABstraCT JOptionPane setSize ? AWT, Swing, JavaFX & SWT 6
S JOptionPane.showInputDialog JList erzwingen? AWT, Swing, JavaFX & SWT 4
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
G JOptionPane.showInputDialog(): Texteingabe und Fokus AWT, Swing, JavaFX & SWT 3
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
F JOptionPane.showMessageDialog AWT, Swing, JavaFX & SWT 2
M JOptionPane.showMessageDialog() mit printStackTace() ? AWT, Swing, JavaFX & SWT 7
QDog JTabbedPane JOptionPane AWT, Swing, JavaFX & SWT 2
K Tabelle nach JOptionPane updaten AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben