首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用java刷新面板

用java刷新面板
EN

Stack Overflow用户
提问于 2013-11-26 18:52:49
回答 2查看 98关注 0票数 1

我正在尝试编写一个具有默认图像(white.jpeg)的applet程序。Applet有两个JButtons,可以在单击图像的相应button.Neither时加载蓝色图像(blue.jpeg)或红色图像(red.jpeg),单击任一按钮即可加载。

我希望添加任何建议或代码,以使applet具有功能。

代码语言:javascript
运行
复制
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class panel extends JApplet implements ActionListener
{
    private JButton red;
    private JButton blue;
    private JPanel panel,inner;
    private Image img;
    private ImageIcon icon;
    private JLabel label;

    public void init()
    {
        panel=new JPanel();
        inner=new JPanel();
        red=new JButton("Red");
        blue=new JButton("Blue");
            red.addActionListener(this);
            blue.addActionListener(this);
        inner.add(blue);
        inner.add(red);

        try
        {
                img=ImageIO.read(this.getClass().getResource("white.jpeg"));
                img=img.getScaledInstance(300,300, Image.SCALE_DEFAULT);
                icon=new ImageIcon(img);
                label=new JLabel(icon);
                add(label,java.awt.BorderLayout.CENTER);
                add(inner,java.awt.BorderLayout.SOUTH);


        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

    }


    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==red)
        {
            try
            {
                    removeAll();
                    img=ImageIO.read(this.getClass().getResource("red.jpeg"));
                    img=img.getScaledInstance(300,300, Image.SCALE_DEFAULT);
                    icon=new ImageIcon(img);
                    label=new JLabel(icon);
                    add(label,java.awt.BorderLayout.CENTER);
                    add(inner,java.awt.BorderLayout.SOUTH);
                    validate();
                    repaint();

            }
            catch(IOException ex)
            {
                ex.printStackTrace();
            }

        }
        if(e.getSource()==blue)
        {
            try
            {       removeAll();
                    img=ImageIO.read(this.getClass().getResource("blue.jpeg"));
                    img=img.getScaledInstance(300,300, Image.SCALE_DEFAULT);
                    icon=new ImageIcon(img);
                    label=new JLabel(icon);
                    add(label,java.awt.BorderLayout.CENTER);
                    add(inner,java.awt.BorderLayout.SOUTH);
                    validate();
                    repaint();

            }
            catch(IOException ex)
            {
                ex.printStackTrace();
            }

        }

    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-26 18:59:52

不要更换所有组件,只需更换图标即可。

代码语言:javascript
运行
复制
label.setIcon( icon );

不需要重新验证()或重新绘制(),标签将自动重新绘制自己。

票数 3
EN

Stack Overflow用户

发布于 2013-11-26 19:06:58

实际上,您需要在按钮中添加 ActionListener

代码语言:javascript
运行
复制
red.addActionListener(this);

代码语言:javascript
运行
复制
blue.addActionListener(this);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20225527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档