Tomas Hubalek napsal(a):
Zdar,

Mam takovy problem: Mam formular (napr. jako JPanel) a chtel bych pred nejakou akci disablovat vsechny prvky a po skonceni teto akce bych chtel obnovit stav techto prvku. Naivne prochazim rekurzivne vsechny prvky a pamatuju si jejich stav, ktery pak obnovuju.

Mam urcite pochybnosti o spravnosti tohoto postupu (protoze disabluju spoustu prvku u nichz to nejspis neni nutne a mozna i vhodne, jako napr. javax.swing.CellRendererPane, javax.swing.plaf.metal.MetalComboBoxEditor apod)., tak by me potesil nejaky tip, jak to udelat lepe…

Dik

Tom

Ahoj,

jestli jsem to dobře pohopil, tak potřebuješ místo JPanelu použít následující třídu:

public class XPanel extends JPanel {

    /**
     *
     */
    public XPanel() {
        super();
    }

    /**
     * @param isDoubleBuffered
     */
    public XPanel(boolean isDoubleBuffered) {
        super(isDoubleBuffered);
    }

    /**
     * @param layout
     */
    public XPanel(LayoutManager layout) {
        super(layout);
    }

    /**
     * @param layout
     * @param isDoubleBuffered
     */
    public XPanel(LayoutManager layout, boolean isDoubleBuffered) {
        super(layout, isDoubleBuffered);
    }


    /**
     *
     */
    @Override
    public void setEnabled(boolean enabled) {
        Component[] cs = getComponents();
        int n = cs.length;
        for (int i = 0; i < n; i++) {
            Component c = cs[i];

/*            if (!(c instanceof TControl))*/
                c.setEnabled(enabled);
        }

        super.setEnabled(enabled);
    }
}


Petr Michálek

Odpovedet emailem