"Loch" ins GlassPane

MScalli

Erfahrenes Mitglied
Hi leutz.
Ich habe eine etwas ausgefallene Frage.
Ich habe ein JFrame und sperre dieses mit hilfe eines GlassPanes.
soweit so gut.

Jetzt sind aber auf diesem Frame Textfelder die man bearbeiten können muss
(Schlüsselfelder mit denen Abfragen auf eine Datenbank realisiert werden)

Jetzt die Frage.
Kann ich eine art "Loch" in das GlassPane machen damit ich trozdem in genau diese Felder etwas eintragen kann
Bis jetzt rufe ich ein PoPUp auf in dem der User die Daten eintragen kann sobald er auf das gesperrte GlassPane klickt.

Hier bisschen lauffähiger code falls jemand eine Idee hat wie man das bewerkstelligen könnte.

Code:
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;


public class LockFrame extends JFrame{


	LockFrame(){
		this.setSize(400, 400);
		this.setLayout(null);

		JTextField tf = new JTextField();
		tf.setBounds(50, 50, 100, 25);
		this.add(tf);
		
		lockFrame();
		
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		new LockFrame();

	}
	
	protected void lockFrame(){
		
	    final Component hardGlass = this.getGlassPane();
	    hardGlass.setVisible(true);

	    final Runnable unlocker = new Runnable(){
	    	
	        public void run(){
	            String key = JOptionPane.showInputDialog(hardGlass, "Eingabe", "Bitte Schlüssel eingeben",
	                    JOptionPane.INFORMATION_MESSAGE);
	            if ("test".equals(key)){
	            	// Daten holen und Felder füllen
	                hardGlass.setVisible(false);
	            }
	            else if (key != null){
	                JOptionPane.showMessageDialog(hardGlass, "Datensatz nicht vorhanden", "Achtung",
	                        JOptionPane.WARNING_MESSAGE);
	            }
	        }
	    };

	    hardGlass.addMouseListener(new MouseAdapter() {
	        public void mouseClicked(MouseEvent e){
	            unlocker.run();
	        }
	    });
	    hardGlass.addKeyListener(new KeyAdapter() {
	        public void keyPressed(KeyEvent e){
	            unlocker.run();
	        }
	    });
	}
}

Ich hoffe das geht irgendwie.
Bitte schaut es euch mal an.

Gruss
MScalli
 
Hallo,

ich verstehe nicht so ganz, warum die das Frame sperren möchtest, obwohl was eingegeben werden soll.

Gruß

Sascha
 
Sry das ich jetzt erst wieder schreibe..
War todkrank :(

zu deiner Frage..
Wenn der User in das Key Feld einen bestehenden Schlüssel eingibt werden alle anderen Felder mit den Daten dieses Satzes gefüllt.
Ist der Satz noch nicht vorhanden wird einer erzeugt und die Felder mit Default-Daten(meistens ein Blank) gefüllt.. und somit bereits eingegeben Daten überschrieben.

deswegen will ich ALLES bis auf das key-feld sperren und erst öffnen wenn ein Satz gewählt wurde.
Es gibt nämlich user die den Ablauf, Satz erstellen -> dann Felder füllen, nicht in den griff bekommen und dann sagen das muss geändert werden weil bereits eingetragene Daten überschrieben werden(mit den Default werten eines neuen Satzes)

und nun die kurz antwort -> wegen den DAU´s (Dümmster Anzunehmender User)
:)
 
Zuletzt bearbeitet:
Zurück