.setEditable() - Methode ändern

BlockeR

Erfahrenes Mitglied
hallo leute,
ich habe das mal eine Frage. Ich habe ein paar TextFields welche ich mit der Methode setEditable(false) auf nicht editierbar sette. Leider ändert sich auch gleich das Aussehen des TextFields und das wollte ich nicht unbedingt. Gibt es da eine Möglichkeit, das das TextField sein Aussehen nicht verändert aber trotzdem nicht editierbar ist?

Danke schon mal...
 
Hi BlockeR,

Du könntest sowas machen:

Java:
 	 JTextField tf = new JTextField("Was auch immer...") { 	 
  		public void setEditable(boolean b) { 
  			Color fg = this.getForeground();
  			Color bg = this.getBackground();
  			super.setEditable(b);
  			this.setBackground(bg);
  			this.setForeground(fg);
  		}
 
  	 };

Gruß
joschi
 
Hi,

also bei mir funktiniert es.
Hast Du auch setEditable auf false gesetzt?

Hier nochmal eine leicht abgeänderte Variante:

Java:
 JTextField tf = new JTextField("Was auch immer...") { 	 
  		public void setEditable(boolean b) {
  			Color fg = this.getForeground();
  			Color bg = this.getBackground();
  			super.setEditable(b);
  			if(!b) {
	  			this.setBackground(bg);
	  			this.setForeground(fg);
	  			this.setBorder(BorderFactory.createEtchedBorder());
  			}
  		}
 
  	 };
  	 tf.setEditable(false);

Leider lässt sich das Border nicht so einfach kopieren. Keine Ahnung woran das liegt.

Gruß
joschi
 
Zuletzt bearbeitet:
hab ihn ne bisschen gekürzt, weil das 4 Dateien sind....

Code:
        fieldPath = new javax.swing.JTextField();

       JTextField fieldPath = new JTextField() {

            @Override
			public void setEditable(boolean b) {

                Color fg = this.getForeground();

                Color bg = this.getBackground();

                super.setEditable(b);

                if(!b) {

                    this.setBackground(bg);

                    this.setForeground(fg);

                }

            }



         };

       fieldPath.setEditable(false);

und in einer anderen habe ich einfach einen Knopf in dem ich testweise einfach die Methode reingeschrieben.

Code:
	public void cmdBtnRun(@SuppressWarnings("unused") ActionEvent ae) {

			fieldPath().setText("test");
	}

wenn ich das obere weg lasse funktioniert es, aber mit der Methode die du mir gegeben hast leider nicht...keine Ahnung warum.
 
Zurück