new-有时间方便帮我看看java如何点击改变Label或JPanel背景图片么

问题描述

有时间方便帮我看看java如何点击改变Label或JPanel背景图片么

我想通过点击一个单选按钮事件,然后更改左上角框框的背景图片,如和重绘,大神方便看看嘛,谢谢

 import java.awt.Button;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class JFrameWindow {

    Frame frame_win ;
    Label scan_win;
    Panel scan_img;
    Button scan, res, calcul, next;
    JPanel fFace, uFace, lFace, rFace, bFace, dFace;
    JRadioButton fFaceBotton, uFaceBotton, lFaceBotton, rFaceBotton, dFaceBotton, bFaceBotton;
    ButtonGroup buttonGroup;
    Label in, ou;
    TextArea author;

    @SuppressWarnings("deprecation")
    void init(){
        final shibie sb = new shibie();

        frame_win = new JFrame("魔方自动扫描还原");
        scan_win = new Label("扫描窗口");
        scan_img = new Panel();

        bFace = new JPanel();
        uFace = new JPanel();
        fFace = new JPanel();
        dFace = new JPanel();
        rFace = new JPanel();
        lFace = new JPanel();

        scan = new Button("扫描");
        calcul = new Button("运算");
        next = new Button("下步");
        res = new Button("清除");

        buttonGroup = new ButtonGroup();
        fFaceBotton = new JRadioButton("正面");
        uFaceBotton = new JRadioButton("上面");
        lFaceBotton = new JRadioButton("左面");
        rFaceBotton = new JRadioButton("右面");
        dFaceBotton = new JRadioButton("底面");
        bFaceBotton = new JRadioButton("背面");
        buttonGroup.add(fFaceBotton);
        buttonGroup.add(uFaceBotton);
        buttonGroup.add(lFaceBotton);
        buttonGroup.add(rFaceBotton);
        buttonGroup.add(bFaceBotton);
        buttonGroup.add(dFaceBotton);

        in = new Label();
        ou = new Label();
        author = new TextArea("n作者:AnkennnnEmail:1261123807@qq.comn版权所有", 6, 40, 3);

        frame_win.setBounds(300, 100, 750, 530);
        frame_win.setLayout(null);
        frame_win.setResizable(false);

        scan_win.setBounds(1, 1, 300, 300);
        scan_win.setBackground(new java.awt.Color(153, 204, 204));
        //scan_win.setVisible(false);

        scan_img.setBounds(340, 80, 320, 425);
        scan_img.setBackground(new java.awt.Color(153, 204, 204));
        scan_img.setLayout(null);
        //scan_img.setVisible(false);

        bFace.setBounds(110, 5, 100, 100);
        bFace.setBackground(new java.awt.Color(204, 204, 255));
        uFace.setBounds(110, 110, 100, 100);
        uFace.setBackground(new java.awt.Color(204, 204, 255));
        fFace.setBounds(110, 215, 101, 100);
        fFace.setBackground(new java.awt.Color(204, 204, 255));
        dFace.setBounds(110, 320, 100, 100);
        dFace.setBackground(new java.awt.Color(204, 204, 255));
        lFace.setBounds(5, 215, 100, 100);
        lFace.setBackground(new java.awt.Color(204, 204, 255));
        rFace.setBounds(215, 215, 100, 100);
        rFace.setBackground(new java.awt.Color(204, 204, 255));
        scan_img.add(fFace);
        scan_img.add(uFace);
        scan_img.add(dFace);
        scan_img.add(rFace);
        scan_img.add(lFace);
        scan_img.add(bFace);

        scan.setBounds(1, 310, 70, 20);
        calcul.setBounds(76,310,70,20);
        res.setBounds(226,310,70,20);
        next.setBounds(151,310,70,20);

        fFaceBotton.setBounds(680, 170, 80, 20);
        uFaceBotton.setBounds(680, 195, 80, 20);
        lFaceBotton.setBounds(680, 220, 80, 20);
        rFaceBotton.setBounds(680, 245, 80, 20);
        bFaceBotton.setBounds(680, 270, 80, 20);
        dFaceBotton.setBounds(680, 295, 80, 20);

        in.setText("输入:");
        in.setBounds(305, 5, 430, 30);
        in.setBackground(new java.awt.Color(153, 204, 204));
        ou.setText("输入:");
        ou.setBounds(305, 45, 430, 30);
        ou.setBackground(new java.awt.Color(153, 204, 204));
        //author.setText("作者:AnkenEmail:1261123807@qq.comn版权所有");
        author.setBounds(20, 380, 200, 100);
        author.disable();
        //author.setBackground(new java.awt.Color(153, 204, 204));

        frame_win.add(scan_win);
        frame_win.add(scan_img);
        frame_win.add(scan);
        frame_win.add(calcul);
        frame_win.add(next);
        frame_win.add(res);
        frame_win.add(fFaceBotton);
        frame_win.add(uFaceBotton);
        frame_win.add(lFaceBotton);
        frame_win.add(rFaceBotton);
        frame_win.add(bFaceBotton);
        frame_win.add(dFaceBotton);
        frame_win.add(in);
        frame_win.add(ou);
        frame_win.add(author);

        fFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "F";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
                setBkground();          //更改背景
                scan_win.repaint();
            }
        });

        uFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "u";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
            }
        });

        lFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "l";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
            }
        });

        rFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "r";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
            }
        });

        bFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "b";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
            }
        });

        dFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "d";
                sb.shibei(fac);
                System.out.println("点击了"+fac);
            }
        });

        frame_win.setVisible(true);
    }

        void setBkground(){
            scan_win.setBackground(new java.awt.Color(204, 204, 255));
            //if(true){
            Label scan_win = new Label("wocao") {
                    protected void paintComponent(Graphics g) {
                        ImageIcon icon = new ImageIcon("D:/test/java/MoFangView/face_img/"+fac+".jpg");
                        Image img = icon.getImage();
                        g.drawImage(img, 0, 0, icon.getIconWidth(), icon.getIconHeight(), icon.getImageObserver());
                        System.out.print("重绘"+fac);
                    }
                };
            //}
                frame_win.add(scan_win);
        }

    JFrameWindow(){
        init();
    }

    private String fac = null;

}

解决方案

两个问题,一个是不要使用Label对象,这个没有办法设置Icon;第二个更新图像的时候设置Icon即可,不需要再新建对象了。下面代码测试通过了,你试试。

import java.awt.Button;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class JFrameWindow extends JFrame {

    Frame frame_win;
    JLabel scan_win;
    Panel scan_img;
    Button scan, res, calcul, next;
    JPanel fFace, uFace, lFace, rFace, bFace, dFace;
    JRadioButton fFaceBotton, uFaceBotton, lFaceBotton, rFaceBotton,
            dFaceBotton, bFaceBotton;
    ButtonGroup buttonGroup;
    Label in, ou;
    TextArea author;

    @SuppressWarnings("deprecation")
    void init() {
        final shibie sb = new shibie();

        frame_win = new JFrame("魔方自动扫描还原");
        scan_win = new JLabel("扫描窗口");
        scan_img = new Panel();

        bFace = new JPanel();
        uFace = new JPanel();
        fFace = new JPanel();
        dFace = new JPanel();
        rFace = new JPanel();
        lFace = new JPanel();

        scan = new Button("扫描");
        calcul = new Button("运算");
        next = new Button("下步");
        res = new Button("清除");

        buttonGroup = new ButtonGroup();
        fFaceBotton = new JRadioButton("正面");
        uFaceBotton = new JRadioButton("上面");
        lFaceBotton = new JRadioButton("左面");
        rFaceBotton = new JRadioButton("右面");
        dFaceBotton = new JRadioButton("底面");
        bFaceBotton = new JRadioButton("背面");
        buttonGroup.add(fFaceBotton);
        buttonGroup.add(uFaceBotton);
        buttonGroup.add(lFaceBotton);
        buttonGroup.add(rFaceBotton);
        buttonGroup.add(bFaceBotton);
        buttonGroup.add(dFaceBotton);

        in = new Label();
        ou = new Label();
        author = new TextArea("n作者:AnkennnnEmail:1261123807@qq.comn版权所有",
                6, 40, 3);

        frame_win.setBounds(300, 100, 750, 530);
        frame_win.setLayout(null);
        frame_win.setResizable(false);

        scan_win.setBounds(1, 1, 300, 300);
        scan_win.setOpaque(true);
        scan_win.setBackground(new java.awt.Color(153, 204, 204));
        // scan_win.setVisible(false);

        scan_img.setBounds(340, 80, 320, 425);
        scan_img.setBackground(new java.awt.Color(153, 204, 204));
        scan_img.setLayout(null);
        // scan_img.setVisible(false);

        bFace.setBounds(110, 5, 100, 100);
        bFace.setBackground(new java.awt.Color(204, 204, 255));
        uFace.setBounds(110, 110, 100, 100);
        uFace.setBackground(new java.awt.Color(204, 204, 255));
        fFace.setBounds(110, 215, 101, 100);
        fFace.setBackground(new java.awt.Color(204, 204, 255));
        dFace.setBounds(110, 320, 100, 100);
        dFace.setBackground(new java.awt.Color(204, 204, 255));
        lFace.setBounds(5, 215, 100, 100);
        lFace.setBackground(new java.awt.Color(204, 204, 255));
        rFace.setBounds(215, 215, 100, 100);
        rFace.setBackground(new java.awt.Color(204, 204, 255));
        scan_img.add(fFace);
        scan_img.add(uFace);
        scan_img.add(dFace);
        scan_img.add(rFace);
        scan_img.add(lFace);
        scan_img.add(bFace);

        scan.setBounds(1, 310, 70, 20);
        calcul.setBounds(76, 310, 70, 20);
        res.setBounds(226, 310, 70, 20);
        next.setBounds(151, 310, 70, 20);

        fFaceBotton.setBounds(680, 170, 80, 20);
        uFaceBotton.setBounds(680, 195, 80, 20);
        lFaceBotton.setBounds(680, 220, 80, 20);
        rFaceBotton.setBounds(680, 245, 80, 20);
        bFaceBotton.setBounds(680, 270, 80, 20);
        dFaceBotton.setBounds(680, 295, 80, 20);

        in.setText("输入:");
        in.setBounds(305, 5, 430, 30);
        in.setBackground(new java.awt.Color(153, 204, 204));
        ou.setText("输入:");
        ou.setBounds(305, 45, 430, 30);
        ou.setBackground(new java.awt.Color(153, 204, 204));
        // author.setText("作者:AnkenEmail:1261123807@qq.comn版权所有");
        author.setBounds(20, 380, 200, 100);
        author.disable();
        // author.setBackground(new java.awt.Color(153, 204, 204));

        frame_win.add(scan_win);
        frame_win.add(scan_img);
        frame_win.add(scan);
        frame_win.add(calcul);
        frame_win.add(next);
        frame_win.add(res);
        frame_win.add(fFaceBotton);
        frame_win.add(uFaceBotton);
        frame_win.add(lFaceBotton);
        frame_win.add(rFaceBotton);
        frame_win.add(bFaceBotton);
        frame_win.add(dFaceBotton);
        frame_win.add(in);
        frame_win.add(ou);
        frame_win.add(author);

        fFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "F";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
                setBkground(); // 更改背景
                scan_win.repaint();
            }
        });

        uFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "u";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
            }
        });

        lFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "l";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
            }
        });

        rFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "r";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
            }
        });

        bFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "b";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
            }
        });

        dFaceBotton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fac = "d";
                sb.shibei(fac);
                System.out.println("点击了" + fac);
            }
        });

        frame_win.setVisible(true);
    }

    void setBkground() {
        scan_win.setBackground(new java.awt.Color(204, 204, 255));
        scan_win.setIcon(new ImageIcon(
                "D:/test/java/MoFangView/face_img/"+fac+".jpg"));
    }

    JFrameWindow() {
        init();
    }

    private String fac = null;

    public static void main(String[] args) {
        JFrameWindow frm = new JFrameWindow();
    }

}
时间: 2024-10-29 08:24:07

new-有时间方便帮我看看java如何点击改变Label或JPanel背景图片么的相关文章

java swing中如何为一个窗体添加背景图片

问题描述 java swing中如何为一个窗体添加背景图片 java swing中如何为一个窗体添加背景图片,java swing中如何为一个窗体添加背景图片 解决方案 http://blog.csdn.net/caixiexin/article/details/6608919 解决方案二: 在JFrame中添加JPanel面板,然后就可以设置了.

用javap 反汇编帮你理解java特性

用javap 反汇编帮你理解java特性 (使用 javap 深入查看类文件) 作者: Builder.com使用 javap 深入查看类文件 Java 开发人员熟悉在一个循环中使用StringBuffer 来代替串联 String 对象能获得最佳性能.然而,多数开发人员从来没有比较两种方法产生的字节代码的区别.在 Java 开发工具包(JDK)中有一个叫做 javap 的工具可以告诉你为什么这样做可以获得最佳性能. Javap 将一个类和它的方法的一些转储信息输出到标准输出.该工具不把代码反编

通过用JAVAP反汇编来帮你理解Java特性

本文通过介绍用Javap反汇编帮你理解Java特性,使用 Javap 深入查看类文件. Java 开发人员熟悉在一个循环中使用StringBuffer 来代替串联 String 对象能获得最佳性能.然而,多数开发人员从来没有比较两种方法产生的字节代码的区别.在 Java 开发工具包(JDK)中有一个叫做 javap 的工具可以告诉你为什么这样做可以获得最佳性能. Javap 将一个类和它的方法的一些转储信息输出到标准输出.该工具不把代码反编译为 java 源代码,但是它会把字节代码反汇编成为由

日历-求帮写一个java小程序

问题描述 求帮写一个java小程序 读取txt文件,文件中有一个8位的日期(任意),读出并打印此日期开始的一个月日历 解决方案 String s="20160221"; SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); try { Date startDate=sdf.parse(s); Calendar c2=Calendar.getInstance(); Calendar c=Calendar.getI

大神进来帮看看,java导出excel的问题……

问题描述 大神进来帮看看,java导出excel的问题-- 现在是想进行数据库查询然后导出到excel里面,但是当数据量大的时候就会报内存溢出,导出倒是没问题,就是在查询数据库获取list的时候就报内存溢出了,该如何处理,最好能给出示例,十分感谢 解决方案 那你查询是可以分页分批查询出来,然后写入excel中,而且文件数量达到一定数量后再分多个sheet,再进一步可以分多个excel文件 .总之,为了防止内存溢出,要么调整JVM内存参数,要么减少一次加载到内存的数据. 解决方案二: 你的数据量是

php-PHP新手问一个小问题,有时间前辈帮帮忙!小弟在此感激不尽!

问题描述 PHP新手问一个小问题,有时间前辈帮帮忙!小弟在此感激不尽! php写的一个简单提交数据代码没提示错误 但是数据库添加不进去 index.php代码如下: <?php require_once 'conn.php'; $id = $_POST[userid]; $name = $_POST[username]; $content = $_POST[content]; $sql = "insert into all(userid,name,content)values('$id',

请各位大神帮我用java编一下这个程序吧...我一点头绪都没有...

问题描述 请各位大神帮我用java编一下这个程序吧...我一点头绪都没有... 这道题的答案是:x=1.364746094 解决方案 http://wenku.baidu.com/link?url=wjIO2baxEfcSucwWaY_acszu0735F0QeyzjGf-Vrkr6R0xLvWnExVQSjPHb-4AX541nAiEoAaJGrH7V2aGTaoURkYFxRmydDCzkk5XcVgTShttp://download.csdn.net/detail/u012724893/8

java swing如何添加背景图片并能根据窗口大小进行缩放

前段时间在用JAVA SWING做个客户端的时候,有要在一块主面板上添加背景图片的需求,于是自己在网上找了些资料研究一下,有些网友说用JLabel来做,通过设置它的icon属性来实现,但个人感觉这种做法很HACK,呵呵,而且这种方法容易带来在上面的内容被遮住等等的问题,所以个人更喜欢用一个继承JPanel的类来实现的方法,其实我感觉它跟Web中的层的概念有几分相似吧,只需要把这个"层"加到面板的最下面,作为垫底的,就OK了,来看看怎样实现它: import javax.swing.JP

怎么用java显示ftp服务器上文件夹中的图片在jsp页面上?

问题描述 怎么用java显示ftp服务器上文件夹中的图片在jsp页面上? ftp在另一台windows上,访问jsp页面要读取并显示出ftp上的图片. ftp上的图片路径保存在数据库中,操作ftp的jar我选了apache的FtpClient. 现在的问题是,action获取到ftp上的文件后,是下载下来再读取成流输出到页面呢?还是直接从FTP获取成流输出到页面?如果有,求思路,最好有代码举例我不想ftp上的文件下载到部署环境上然后再输出到页面,想通过读取ftp的流直接显示到页面,页面关闭后流就