added JColoredToggleButton

JDiaAutoScaleFix
Harald Wolff 2018-02-05 12:03:40 +01:00
parent 03f1363ec9
commit 1753db1ef9
1 changed files with 109 additions and 0 deletions

View File

@ -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;
}
}