Image

Imagemobject wrote in Imageru_java

чудеса и магия...

Намедни писал код для группы JRadioButton-ов. Это ладно, что час я прокопался, выясняя -- почему по myRadioButton.setSelected(true) не вызывает приаттаченный к кнопке ActionListener. Думаю, это был последний раз, когда я не читал исходники перед использованием swing, а воспользовался интуицией -- на самом деле, такой метод только выбирает кнопку, но не вызывает её слушателей. Вместо этого нужно использовать doClick())... Но каково же было моё удивление, когда в исходниках (jdk 1.5, update 4: AbstractButton.java) я увидел это:
/**
     * Programmatically perform a "click". This does the same
     * thing as if the user had pressed and released the button.
     */
    public void doClick() {
        doClick(68);
    }


"магия..." -- подумал я и пошёл дальше. А дальше всё было просто:

/**
     * Programmatically perform a "click". This does the same
     * thing as if the user had pressed and released the button.
     * The button stays visually "pressed" for pressTime
     *  milliseconds.
     *
     * @param pressTime the time to "hold down" the button, in milliseconds
     */
    public void doClick(int pressTime) {
        Dimension size = getSize();
        model.setArmed(true);
        model.setPressed(true);
        paintImmediately(new Rectangle(0,0, size.width, size.height));
        try {
            Thread.currentThread().sleep(pressTime);
        } catch(InterruptedException ie) {
        }
        model.setPressed(false);
        model.setArmed(false);


Как Вам это?

P.S. Честно говоря, мне больше нравится 73, а вам?
P.S.S. Хотя, конечно, 81 -- тоже неплохо.