added JColoredToggleButton
parent
03f1363ec9
commit
1753db1ef9
|
@ -0,0 +1,109 @@
|
|||
package org.hwo.ui;
|
||||
|
||||
import javax.swing.Action;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JToggleButton;
|
||||
import javax.swing.plaf.basic.BasicBorders;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
public class JColoredToggleButton extends JLabel {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Color colorOff = getBackground();
|
||||
private Color colorOn = Color.BLUE;
|
||||
|
||||
private boolean selected = false;
|
||||
|
||||
private LinkedList<ActionListener> actionListeners = new LinkedList<>();
|
||||
|
||||
public JColoredToggleButton() {
|
||||
setHorizontalAlignment(SwingConstants.CENTER);
|
||||
setBorder(BorderFactory.createRaisedSoftBevelBorder());
|
||||
setOpaque(true);
|
||||
setFocusable(true);
|
||||
|
||||
addMouseListener(new MouseAdapter() {
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
toggle();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
setSelected(false);
|
||||
}
|
||||
|
||||
public void addActionListener(ActionListener listener) {
|
||||
this.actionListeners.add(listener);
|
||||
}
|
||||
public void removeActionListener(ActionListener listener) {
|
||||
this.actionListeners.remove(listener);
|
||||
}
|
||||
public void fireAction() {
|
||||
for (ActionListener al: this.actionListeners) {
|
||||
al.actionPerformed(new ActionEvent(this, 0, ""));
|
||||
}
|
||||
}
|
||||
|
||||
public void toggle() {
|
||||
setSelected(!isSelected());
|
||||
}
|
||||
|
||||
public boolean isSelected()
|
||||
{
|
||||
return this.selected;
|
||||
}
|
||||
public void setSelected(boolean selected){
|
||||
if (this.selected != selected) {
|
||||
this.selected = selected;
|
||||
fireAction();
|
||||
repaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
if (this.selected) {
|
||||
setBackground(colorOn);
|
||||
setForeground(colorOff);
|
||||
}
|
||||
else {
|
||||
setBackground(colorOff);
|
||||
setForeground(colorOn);
|
||||
}
|
||||
super.paint(g);
|
||||
}
|
||||
|
||||
public Color getColorOff() {
|
||||
return colorOff;
|
||||
}
|
||||
public void setColorOff(Color colorOff) {
|
||||
this.colorOff = colorOff;
|
||||
}
|
||||
|
||||
public Color getColorOn() {
|
||||
return colorOn;
|
||||
}
|
||||
public void setColorOn(Color colorOn) {
|
||||
this.colorOn = colorOn;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue