« 2009年12月 | トップページ | 2010年2月 »

2010年1月

2010年1月27日 (水)

ダブルクリックで JToggleButton

スタンプ箱の入れ替えロックボタンを知らないうちに解除してしまっていて,スタンプが知らないうちに変なところに移動してしまうことがあったので,ロック解除をより厳密にダブルクリックで動作するようにした。JToggleButton を MyJToggleButton に入れ替えるとダブルクリックで動作するようになる。

ui/MyJToggleButton.java

package open.dolphin.ui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

/**
 * ダブルクリックで動作する JToggleButton 的なもの
 * @author pns
 */
public class MyJToggleButton extends JLabel {
    private ImageIcon icon;
    private ImageIcon selectedIcon;
    private ActionListener action;
    private boolean isSelected;

    public MyJToggleButton() {
        super();
        isSelected = false;
        addMouseListener(new MouseAdapter(){
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) doClick();
            }
        });
    }

    public void doClick() {
        if (isSelected) {
            isSelected = false;
            super.setIcon(icon);
        } else {
            isSelected = true;
            super.setIcon(selectedIcon);
        }
        action.actionPerformed(new ActionEvent(this, 0, "clicked"));
    }

    public void setIcon(ImageIcon i) {
        this.icon = i;
        super.setIcon(i);
    }

    public void setSelectedIcon(ImageIcon i) {
        this.selectedIcon = i;
    }

    public void addActionListener(ActionListener l) {
        action = l;
    }

    public boolean isSelected() {
        return isSelected;
    }
}

« 2009年12月 | トップページ | 2010年2月 »