Editierbarkeit aller Komponenten eines Panels

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Moin,

gibt es eine Möglichkeit eine Funktion zu schreiben, die alle Elemente eines Panels auf nicht editierbar setzt ?

Also irgendwie in dieser Richtung:

Code:
((JComponent)evt.getSource()).setEditable(false);

Es müßte von einem Event angestoßen werden vergleichbar mit einem onLoad Event in JavaScript.

Hat jemand vielleicht eine Idee.
 
mit getComponents() bekommst du alle Komponenten in dem JPanel,
rekursiv die weiteren Unterkomponenten,

diese musst du nun einzeln bearbeiten,
setEditable() ist aber keine allgemeine Operation von JComponent,
gibt auch nicht unbedingt ein Interface dafür,

z.B. in JComboBox ist es eine ganz normale Operation,
da gibt es nix anderes als

if (component instanceof JComoBox) {
// casten + Aufruf
}

das für alle in Frage kommenden Elemente,
dabei auf Basisklassen + Interface achten

für JTextField und JTextArea ist es z.B. die gemeinsame Basisklasse JTextComponent
 
Danke , klappt gut, getComponents ist echt Spitze.

Das ganze were ich dannmit einem WindowListener zusammen aufrufen.


danke
 
Hallo Marco,

das ist ja noch viel besser...

Dazu vielleicht nur einmal eine Frage...


Wenn ich eine Klasse von JPanel ableite, dann habe ich so kein Panel , welche ich der
methode übergeben kann.

Aber ich kann ja alles in einen zusätzliche Panel legen , dann geht es .


VG
 
Man kann der Methode irgendeine Component übergeben. Das kann ein JButton sein, oder ein Panel, oder ein JPanel - oder ein Objekt einer Klasse, die von JPanel abgeleitet ist
Code:
class Foo extends JPanel 
{
    // enthält buttons und vielleicht weitere JPanels usw...
}

Foo foo = new Foo();
setDeepEnabled(foo, false);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben