2016-11-06 20 views
0

どのようにボタンをクリックするとランダムな画像が表示されるのですか?Javaのランダム画像

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

私はボタン

クラスButtonListenerをクリックしたときに、私は見るために追加する必要が何 ので画像は実際に変更されます

public class Model { 

    public Model(){ 
    } 

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

答えて

1

あなたのコードは、プログラムのようなMVCを作成しようとしているように見える、とそうなら、あなたのモデルが

  1. 状態(すなわち、フィールドまたはフィールド)
  2. ように変化するのリスナーに受け入れ、通知する機能を必要とします(例えば、ビュー自体にモデルに登録されたリスナーがある)、または間接的に(たとえば、コントローラーにモデルに登録されたリスナーがある、通知されたときなど)通知を受けることができますコントローラーがビューを変更します)。

私はこれを行ったときに、モデルにSwingPropertyChangeSupportフィールドと、他のクラスがPropertyChangeListenersをこのサポートオブジェクトに追加および削除できるようにするメソッドを与えました。次に、バインドされたフィールド、ここではランダムintを表すフィールドにはセッターメソッドがあり、このメソッド内では、自分のサポートオブジェクトが、firePropertyChange(...)メソッドの1つを呼び出すことによって保持するすべてのリスナーに通知します。私はおかげでそれを考え出しUsing a JFileChooser with Swing GUI classes and listeners

+0

は例えば、ここでは同様の質問に私の答えをご覧ください – Nestlewater