⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subordinatebutton.java

📁 利用JAVA实现了类似XP中前进后退键样式的主从按钮。
💻 JAVA
字号:
/**
 *  [SubordinateButton.java] 主从按钮
 *
 * 创建日期:(2003-9-4)
 * @author:ONE_Fox
 */

package subbutton;

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.border.Border;
import javax.swing.border.BevelBorder;
import javax.swing.border.EmptyBorder;



public class SubordinateButton extends JPanel {
    

/**
 * 从属按钮相对与主按钮的位置
 *
 * int UP = 1;
 * int DOWN = 2;
 * int LEFT = 3;
 * int RIGHT = 4;
 */
    public static final int UP = 1;
    public static final int DOWN = 2;
    public static final int LEFT = 3;
    public static final int RIGHT = 4;
    
    private int position = RIGHT; //默认从按钮在右边
    
    
/**
 * 按钮三态(普通、鼠标进入、鼠标按下)默认配置
 *
 * usual  默认普通状态边框
 * mouseIn  默认鼠标进入边框
 * mousePress  默认鼠标按下边框
 */
    public static Border usual = new EmptyBorder(2, 2, 2, 2); 
    public static Border mouseIn = new ThinBevelBorder(BevelBorder.RAISED);
    public static Border mousePress = new ThinBevelBorder(BevelBorder.LOWERED);
    
    
    //默认鼠标事件--------------//
    private MouseAdapter listener = null; 


/**
 * master 主按钮
 * slave  从按钮
 */
    public JButton master = null; //主按钮
    public JButton slave = null; //从按钮
    
    
    
//------------------------------------------------------//

/**
 * 构造方法 1:
 * @param master javax.swing.JButton 主按钮
 * @param slave javax.swing.JButton 从按钮
 */
    public SubordinateButton(JButton master, JButton slave) {
        this.master = master;
        this.slave = slave;
        
        listener = new DefaultMouseEvent(master ,slave);
        
        makeButton();
    }


/**
 * 构造方法 2:
 * @param master javax.swing.JButton 主按钮
 * @param slave javax.swing.JButton 从按钮
 * @param position int 从属按钮位置
 */
    public SubordinateButton(JButton master, JButton slave, int position) {
        this(master, slave);
        
        if(position >= 1 && position <= 4)
            this.position = position;
    }





//------------------------------------------------------//

/**
 * 方法:按钮制作
 */
    private void makeButton() {
        setLayout(new BorderLayout());
        
        String pos = position == 1? BorderLayout.NORTH:
                     (position == 2? BorderLayout.SOUTH:
                     (position == 3? BorderLayout.WEST:BorderLayout.EAST));
        
        add(master, BorderLayout.CENTER);
        add(slave, pos);
        
        setUsualBorder(usual);
        
        setListener(listener);
    }







/**
 * 方法:设置普通状态边框
 */
    public void setUsualBorder(Border usual) {
        this.usual = usual;
        master.setBorder(usual);
        slave.setBorder(usual);
    }



/**
 * 方法:设置鼠标进入边框
 */
    public void setMouseInBorder(Border mouseIn) {
        this.mouseIn = mouseIn;
    }



/**
 * 方法:设置鼠标按下边框
 */
    public void setMousePressBorder(Border mousePress) {
        this.mousePress = mousePress;
    }
    
    

/**
 * 方法:设置鼠标监听
 */
    public void setListener(MouseAdapter listener) {
        this.listener = listener;
        
        master.removeMouseListener(listener);
        slave.removeMouseListener(listener);
        
        master.addMouseListener(listener);
        slave.addMouseListener(listener);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -