java按钮看不见,java – 没有状态JButton

您可以使用setBorderPainted()和setContentAreaFilled()方法实现此目的.这是您正在寻找的简短演示.我希望它会给你如何实现你的任务的粗略数字:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class CustomJButton extends JButton

{

public CustomJButton(String icon)

{

super(icon);

/*int size = 30;

setPreferredSize(new Dimension(size, size));*/

addFocusListener(new ButtonFocusAdapter());

addMouseListener(new ButtonMouseAdapter());

setContentAreaFilled(false);

setBorderPainted(false);

//setFocusable(false);//Don't use this method. This would avoid the focus event on JButton

}

private void decorateButton()

{

setContentAreaFilled(true);

setBorderPainted(true);

}

private void unDecorateButton()

{

setContentAreaFilled(false);

setBorderPainted(false);

}

private class ButtonFocusAdapter extends FocusAdapter

{

@Override

public void focusGained(FocusEvent evt)

{

decorateButton();

}

@Override

public void focusLost(FocusEvent evt)

{

unDecorateButton();

}

}

private class ButtonMouseAdapter extends MouseAdapter

{

@Override

public void mouseEntered(MouseEvent evt)

{

decorateButton();

}

@Override

public void mouseExited(MouseEvent evt)

{

unDecorateButton();

}

}

}

public class ButtonFrame extends JFrame

{

public void createAndShowGUI()

{

Container c = getContentPane();

c.setLayout(new FlowLayout());

for (int i = 0; i < 4 ; i++ )

{

CustomJButton cb = new CustomJButton("Button "+i);

c.add(cb);

}

pack();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String st[])

{

SwingUtilities.invokeLater( new Runnable()

{

@Override

public void run()

{

ButtonFrame bf = new ButtonFrame();

bf.createAndShowGUI();

bf.setLocationRelativeTo(null);

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值