📄 jselectbutton.java
字号:
package flow.graph.test;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.plaf.*;
import javax.swing.plaf.basic.*;
import com.sun.java.swing.plaf.windows.*;
/**
* <p>Title: OpenSwing</p>
* <p>Description:弹出式菜单按钮 </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
public class JSelectButton extends JToggleButton implements Serializable {
/**
* 按钮事件
*/
private ButtonListener listener = new ButtonListener();
// javax.swing.plaf.BorderUIResource$EmptyBorderUIResource emptyBorder = new
// javax.swing.plaf.BorderUIResource$EmptyBorderUIResource(new Insets(0, 0,
// 0, 0));
/**
* <p>Title: OpenSwing</p>
* <p>Description: 鼠标移入时的边界</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
public class UpBorder
extends AbstractBorder {
int thickness = 1;
public void paintBorder(Component c, Graphics g, int x, int y,
int width, int height) {
g.setColor(Color.white);
g.drawLine(0, 0, width - 1, 0);
g.drawLine(0, 0, 0, height - 1);
g.setColor(Color.gray);
g.drawLine(width - 1, 0, width - 1, height);
g.drawLine(0, height - 1, width, height - 1);
}
public Insets getBorderInsets(Component c) {
return new Insets(thickness, thickness, thickness, thickness);
}
}
/**
* <p>Title: OpenSwing</p>
* <p>Description: 鼠标按下时的边界</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
public class DownBorder
extends AbstractBorder {
int thickness = 1;
public void paintBorder(Component c, Graphics g, int x, int y,
int width, int height) {
g.setColor(Color.gray);
g.drawLine(0, 0, width - 1, 0);
g.drawLine(0, 0, 0, height - 1);
g.setColor(Color.white);
g.drawLine(width - 1, 0, width - 1, height);
g.drawLine(0, height - 1, width, height - 1);
}
public Insets getBorderInsets(Component c) {
return new Insets(thickness, thickness, thickness, thickness);
}
}
/**
* <p>Title: OpenSwing</p>
* <p>Description: 按钮各种动作时边界变化以及事件处理</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
private class ButtonListener
implements MouseListener {
UpBorder upBorder = new UpBorder();
DownBorder downBorder = new DownBorder();
public void mouseClicked(MouseEvent e) {
setSelected(!isSelected());
}
public void mousePressed(MouseEvent e) {
if (!JSelectButton.this.isEnabled()) {
return;
}
setBorder(downBorder);
}
public void mouseReleased(MouseEvent e) {
if (!JSelectButton.this.isEnabled())
return;
JSelectButton sb = (JSelectButton)e.getSource();
if(sb.contains(e.getPoint())){
if(isSelected() == false){
setBorder(downBorder);
}
else{
setBorder(upBorder);
}
}
}
public void mouseEntered(MouseEvent e) {
if (!JSelectButton.this.isEnabled())
return;
if(isSelected() == false)
setBorder(upBorder);
else
setBorder(downBorder);
}
public void mouseExited(MouseEvent e) {
if (!JSelectButton.this.isEnabled()) {
return;
}
if(isSelected() == true)
setBorder(downBorder);
else
setBorder(null);
}
}
public JSelectButton(String text) {
super(text, null);
setFocusable(false);
setBorder(null);
addMouseListener(listener);
this.doLayout();
}
public JSelectButton(Icon icon) {
super(null, icon);
setFocusable(false);
setBorder(null);
addMouseListener(listener);
this.doLayout();
}
/**
* 设置灰化状态
* @param enabled boolean
*/
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
}
/**
* 测试代码
* @param args String[]
*/
public static void main(String[] args) {
JFrame frame = new JFrame("JPopupButton Demo");
class DemoAction
extends AbstractAction {
public DemoAction() {
super.putValue(Action.NAME,
"Demo JPopupButton " +
new java.util.Random().nextInt());
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog( (Component) e.getSource(),
super.getValue(Action.NAME));
}
}
JSelectButton btt1 = new JSelectButton("Button1");
JSelectButton btt2 = new JSelectButton(UIManager.getIcon("FileView.computerIcon"));
/*
btt1.setPreferredSize(new Dimension(60, 25));
btt1.setSize(new Dimension(60, 25));
btt1.setMaximumSize(new Dimension(60, 25));
btt2.setPreferredSize(new Dimension(100, 25));
btt2.setSize(new Dimension(100, 25));
btt2.setMaximumSize(new Dimension(100, 25));
btt3.setPreferredSize(new Dimension(40, 25));
btt3.setSize(new Dimension(40, 25));
btt3.setMaximumSize(new Dimension(40, 25));
*/
JToolBar bar = new JToolBar("Toolbar");
bar.setLayout(new FlowLayout(FlowLayout.LEFT));
bar.add(btt1);
bar.add(btt2);
frame.getContentPane().add(bar, BorderLayout.NORTH);
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -