importjavaappletApplet;importjavaawtColor;importjavaawtFont;importjavaawtGraphics;publicclassDrawStringextendsApplet{publicvoidpaint(Graphicsg){gsetFont(newFont("宋体",FontBOLD,36));gsetColor(Colorgreen);gdrawString("这是一个JavaApplet程序",5,30);gsetColor(Colorred);gdrawString("欢迎学习Java",5,80);}}
你写的代码没有把颜色给回原来颜色!
可以如下, 加上defaultForeground, defaultBackground, 并在constructor中记录button原来的颜色, 在button失去focus时,改回原来颜色!
因为只用到button, 并且所有button在得到焦点时都是同一文字/背景颜色, 在失去焦点时也都是同一文字/背景颜色, 所以不需要在focusGained()或focusLost()中检验是那一个button获得或失去焦点!
Color defaultForeground;
Color defaultBackground;
public FocusEventTest (){
defaultForeground = logingetForeground();
defaultBackground = logingetBackground();
}
public void focusGained(FocusEvent e){
JButton bt = (JButton)egetSource();
btsetForeground(Colorred);
btsetBackground(Coloryellow);
}
public void focusLost(FocusEvent e){
JButton bt = (JButton)egetSource();
btsetForeground(defaultForeground);
btsetBackground(defaultBackground);
}
这种一般通过改对应的UI类来实现,如果不想该UI类(有点复杂),下面的方式也行:
class MyButton extends JButton{MyButton(String txt){
super(txt);
thissetOpaque(false); // 设置为透明
}
public void paint(Graphics g) {
gfillRect(0,0,getWidth(),getHieght()); // 自己绘制背景
superpaint(g);
}
}
import javaawtColor;
import javaxswingJButton;
import javaxswingJFrame;
public class Util {
public static void main(String[] args) {
JFrame jf = new JFrame("小程序");
jfsetLayout(null);
JButton jb=new JButton("ok");
jbsetBounds(100, 50, 50, 25);
jbsetOpaque(true);//先透明
jbsetBackground(Colorblue);//背景色
jbsetFocusPainted(false); //不绘制焦点,去掉文字的边框
jfadd(jb);
jfsetSize(300, 200);
jfsetVisible(true);
jfsetLocationRelativeTo(null);
jfsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
}
以上就是关于编写java applet程序 在页面中以红色,绿色,蓝色为顺序循环显示字符串“welcome to java applet!“”请各全部的内容,包括:编写java applet程序 在页面中以红色,绿色,蓝色为顺序循环显示字符串“welcome to java applet!“”请各、java JFrame中关于按钮焦点问题使 按钮文字和背景换颜色的疑问、JAVA Swing中JButton按下后变色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)