繁体   English   中英

Java中的随机图像

[英]Random Image in Java

单击按钮时如何显示随机图像? 我需要添加什么才能查看,因此当我单击按钮时图像实际上会发生变化

ButtonListener

public class ButtonListener implements ActionListener {

    private Model mod;
    public ButtonListener(Model _m){
        mod = _m;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        int x = mod.random();
        if (x == 1) {
            JLabel L1 = new JLabel();
            JLabel L2 = new JLabel();
            JLabel L3 = new JLabel();
            L1.setIcon(new ImageIcon ("Images/Green.png"));
            System.out.println("1");
        }
        else if (x == 2) {
            JLabel L1 = new JLabel();
            L1.setIcon(new ImageIcon("Images/Purple.png"));
            System.out.println("2");
        }
        else {
            JLabel L1 = new JLabel();
            L1.setIcon(new ImageIcon("Images/Red.png"));
            System.out.println("3");
        }
    }
}

View

public class View {

    public View() {
        Model _m = new Model();
        JFrame f = new JFrame("....");
        JPanel p = new JPanel(new GridLayout(2, 3));
        JLabel L1 = new JLabel();
        JLabel D = new JLabel();
        JLabel L2 = new JLabel();
        JLabel L3 = new JLabel();
        JButton B = new JButton("Spin");

        p.add(L2);
        p.add(L3);
        p.add(L1);
        p.add(D);
        p.add(B);
        B.addActionListener(new ButtonListener(_m));
        f.add(p);
        f.pack();
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Model

public class Model {

    public Model(){
    }

    public int random(){
    Random rand = new Random();
        return rand.nextInt(4);
    }
}

您的代码似乎正在尝试创建类似MVC的程序,如果是,则您的模型需要

  1. 状态(即一个或多个字段)
  2. 接受并通知侦听器更改的能力,以便当其“绑定”字段之一发生更改时,可以直接(例如,视图本身具有在模型中注册的侦听器)或间接(例如,控制器具有侦听器向模型注册,然后在收到通知后(控制器)更改视图)。

完成此操作后,为模型提供了SwingPropertyChangeSupport字段以及允许其他类向此支持对象添加和删除PropertyChangeListener的方法。 然后,我的绑定字段(这里是表示随机int的字段)具有setter方法,并且在该方法中,我的支持对象通过调用其firePropertyChange(...)方法之一来通知其持有的所有侦听器。

例如,请在此处查看我对类似问题的回答: 将JFileChooser与Swing GUI类和侦听器一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM