当前位置:  技术问答>java相关

关于Java核心编程中的一个例子----设置JPanel的背景色

    来源: 互联网  发布时间:2015-04-11

    本文导语:  原例是这样的:在一个JPanel放三个按钮,按下以后分别使背景色变为红色、蓝色和黄色。 我想给例子再加个按钮,按下后使背景色变为原来的颜色(好像就是灰色);可是按下总是不起作用。代码如下(仅JPanel类): ...

原例是这样的:在一个JPanel放三个按钮,按下以后分别使背景色变为红色、蓝色和黄色。

我想给例子再加个按钮,按下后使背景色变为原来的颜色(好像就是灰色);可是按下总是不起作用。代码如下(仅JPanel类):

class MyPanel extends JPanel implements ActionListener
{
private JButton yellowbtn;
private JButton bluebtn;
private JButton redbtn;
private JButton restorebtn;

public MyPanel()
{
yellowbtn = new JButton("Yellow");
bluebtn = new JButton("Blue");
redbtn = new JButton("Red");
restorebtn = new JButton("Restore");

add(yellowbtn);
add(bluebtn);
add(redbtn);
add(restorebtn);

yellowbtn.addActionListener(this);
bluebtn.addActionListener(this);
redbtn.addActionListener(this);
restorebtn.addActionListener(this);
}

public void actionPerformed(ActionEvent evt)
{
  Object evtSource = evt.getSource();
  Color originalcolor = getBackground();
  Color color = getBackground();
  if ( evtSource == yellowbtn ) color = Color.yellow;
    else  if ( evtSource == bluebtn ) color = Color.blue;
             else  if ( evtSource == redbtn ) color = Color.red;
    else  if ( evtSource == restorebtn ) color = originalcolor;
    setBackground(color);
    repaint();

}
}

|
当然不起作用了。当初得到的颜色originalcolor,不管是什么,当你按下restorebtn时,又被你设为背景色了。本来就是背景色,你又弄了一边,看起来当然没有效果。

|
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class  MyPanel  extends  JPanel  implements  ActionListener 

private  JButton  yellowbtn; 
private  JButton  bluebtn; 
private  JButton  redbtn; 
private  JButton  restorebtn; 
Color  originalcolor  =  getBackground(); 

public  MyPanel() 

yellowbtn  =  new  JButton("Yellow"); 
bluebtn  =  new  JButton("Blue"); 
redbtn  =  new  JButton("Red"); 
restorebtn  =  new  JButton("Restore"); 

add(yellowbtn); 
add(bluebtn); 
add(redbtn); 
add(restorebtn); 

yellowbtn.addActionListener(this); 
bluebtn.addActionListener(this); 
redbtn.addActionListener(this); 
restorebtn.addActionListener(this); 


public  void  actionPerformed(ActionEvent  evt) 

    Object  evtSource  =  evt.getSource();
    Color  color  =  getBackground(); 
    if  (  evtSource  ==  yellowbtn  )  color  =  Color.yellow; 
        else    if  (  evtSource  ==  bluebtn  )  color  =  Color.blue; 
                          else    if  (  evtSource  ==  redbtn  )  color  =  Color.red; 
        else    if  (  evtSource  ==  restorebtn  )  color  =  originalcolor; 
        setBackground(color); 
        repaint(); 


public static void main(String[] args){
        JDialog.setDefaultLookAndFeelDecorated(true);
        JFrame.setDefaultLookAndFeelDecorated(true);
        Toolkit.getDefaultToolkit().setDynamicLayout(true);
        System.setProperty("sun.awt.noerasebackground","true");

        try {
            javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme( new javax.swing.plaf.metal.DefaultMetalTheme());
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        }  
        catch ( UnsupportedLookAndFeelException e ) {
            System.out.println ("Metal Look & Feel not supported on this platform. nProgram Terminated");
            System.exit(0);
        }
        catch ( IllegalAccessException e ) {
            System.out.println ("Metal Look & Feel could not be accessed. nProgram Terminated");
            System.exit(0);
        }
        catch ( ClassNotFoundException e ) {
            System.out.println ("Metal Look & Feel could not found. nProgram Terminated");
            System.exit(0);
        }   
        catch ( InstantiationException e ) {
            System.out.println ("Metal Look & Feel could not be instantiated. nProgram Terminated");
            System.exit(0);
        }
        catch ( Exception e ) {
            System.out.println ("Unexpected error. nProgram Terminated");
            e.printStackTrace();
            System.exit(0);
        }

   JFrame jf=new JFrame("arron");
   jf.setContentPane(new MyPanel());
   jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   jf.setLocation(200,200);
   jf.pack();
   jf.show();

}
}
j2sdk1.4.0-rc下调试通过,实现你所说的。
你的restore是这样的,每选一种色,就使originalcolor变为该色,当你按restore时当然还是使用当前色啦!

    
 
 

您可能感兴趣的文章:

  • java操作excel2007文档介绍及代码例子
  • 100分求java +VC6.0使用JNI的最简单例子
  • 学习design pattern,苦于没有java代码的例子,高手指点
  • java初学看什么例子比较好。
  • 大家能否推荐几个学习java的经典例子?
  • 如何用JAVA 将一个目录(包括子目录)下所有的文件名列出来呀,举个例子,d:java
  • java sdk中的例子中 *.java 用写字板打开不能自动换行,不知它用什么文本编辑器?
  • 哪有java例子下载?!!!
  • 能否给个在JSP页面中用JAVA画线条和矩形的简单例子,谢谢!
  • Java怎么调用存储过程?给个例子吧?
  • 在JAVA下如何实现用户输入数据,像C的SCANF一样,给个例子吧
  • 请问java里怎么用goto语句??举个例子,好吗?谢谢
  • 谁有完整的java在linux下读excel的完整下载包URL,例子,文档,很急!!!!多少分都行
  • 一个JAVA继承的问题(Thinking in JAVA里的一个例子)
  • 请问:哪里有java所有类包的介绍,用法,及所有类的用途,用法,例子等的书或帮助的下载?
  • 用java开发过的比较优秀的大型系统有哪些,望高手给举几个例子啊
  • 那里有利用JAXP 1.2处理XML(基于XML Schema,而不是DTD)的JAVA程序例子!!! 200分!!!
  • 请问谁有《java2核心技术 卷I:基础知识》书中例子的源代码?急需!!!
  • java 连接Redis的小例子
  • 如何实现在java界面程序中向数据库添加记录,能不能给你例子??
  • Java递归 遍历目录的小例子
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • 我现在刚刚学到JAVA的线程和socket,请问《JAVA 2宝典》和《JAVA核心技术卷2:高级特性》哪本书讲得比较好?
  • 请问哪里有 《JAVA核心技术--基础知识》的电子书下载,谢谢!
  • 都说《Tinking in Java》翻译的很烂,那《Java核心技术》呢?
  • 各位大虾,能否告知JAVA的核心思想
  • ************请问何处有《JAVA核心技术2:高级特性》下载?必给分!
  • 谁知道java核心技术卷一,卷二的下载地址,高分相求
  • JAVA 2 核心技术》卷1,卷2的中文电子书?
  • 哪儿有java2图形设计和java2核心技术卷2的电子书下载,跟贴有分!!
  • java2核心技术(2)的代码谁有, 我的光盘掉了.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 解决java压缩图片透明背景变黑色的问题
  • 我在网页上放了一个JAVA按钮控制背景音乐,在我的机子上运行正常,可在别的机子却产生错误,源代码如下。。。(急,在线等待)
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 我在网页上放了一个JAVA按钮控制背景音乐,在我的机子上运行正常,可在别的机子却产生错误,源代码如下。。。(急,在线等待) iis7站长之家
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 简单说说Java SE、Java EE、Java ME三者之间的区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3