JAVA Swing中JButton按下后变色
这种一般通过改对应的UI类来实现,如果不想该UI类(有点复杂),下面的方式也行:class MyButton extends JButton{ MyButton(String txt){ super(txt); this.setOpaque(false); // 设置为透明 } public void paint(Graphics g) { g.fillRect(0,0,getWidth(),getHieght()); // 自己绘制背景 super.paint(g); } }
JAVA中JBUTTON的背景色问题
这个应该就是你要的效果....
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
public class Exec1 extends JFrame {
public Exec1() {
init();
}
/**
* 初始化窗体
*/
private void init() {
String lookAndFeel = UIManager.getSystemLookAndFeelClassName();
try {
UIManager.setLookAndFeel(lookAndFeel);
} catch (Exception e) {
e.printStackTrace();
}
setLayout(null);
final JButton btnTest = new JButton("测试");
btnTest.setBounds(20, 30, 100, 25);
Border b = new LineBorder(Color.YELLOW, 1);
btnTest.setBorder(b);
add(btnTest);
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Exec1().setVisible(true);
}
}
=============
如果你想要那种的,就不能设lookandfeel了
String lookAndFeel = UIManager.getSystemLookAndFeelClassName();
因为你还没了解这部分的机制。
当你改变lookAndFeel之后,java UI的控件发生不少变化。就是说画控件的代码都不是一套的了。你以后了解这部分只是就知道了。
==============
先给你个思路,看看你就明白了。
=========
你用上面的方法设置,你可以到getSystemLookAndFeelClassName函数里看看
当你的系统是windows那它会返回
com.sun.java.swing.plaf.windows.WindowsLookAndFeel,然而用他之后。你所有控件的UI都是使用sun\java\swing\plaf\windows这下面的控件,如:
WindowsButtonUI.java
WindowsButtonListener.java
WindowsCheckBoxMenuItemUI.java
WindowsCheckBoxUI.java 等等。
而你没设lookandfeel之前使用swing默认的风格显示的。它默认是:
使用javax.swing.plaf.basic.BasicLookAndFeel这个类。而控件的UI就是用下面这些:
BasicButtonUI.java
BasicButtonListener.java
BasicCheckBoxMenuItemUI.java
BasicCheckBoxUI.java等等。其实你看看jdk源码就知道了。
控件UI就是显示控件样子的