2016-12-25 40 views
-1

我对Java很陌生,需要一些帮助来创建我的随机图像选择器。通过JFrame应用程序点击选择随机图像

我迄今为止代码:

package main; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.border.EmptyBorder; 
import javax.swing.border.LineBorder; 
import java.awt.Color; 
import javax.swing.*; 

public class JFrameMain extends JFrame { 

private JPanel contentPane; 
private String []images = { "010.png", "011.png", "012.png", "019-a.png", "020-a.png", "021.png", "022.png", 
      "025.png", "026-a.png", "027-a.png", "028-a.png", "035.png", "036.png", "037-a.png", "038-a.png", 
      "039.png", "040.png", "041.png", "042.png", "046.png", "047.png", "050.png", "051.png", 
      "052-a.png", "053-a.png", "054.png", "055.png", "056.png", "057.png", "058.png", "059.png", 
      "060.png", "061.png", "062.png", "063.png", "064.png", "065.png", "066.png", "067.png", "068.png", 
      "072.png", "073.png", "074-a.png", "075-a.png", "076-a.png", "079.png", "080.png", "081.png", 
      "082.png", "088-a.png", "089-a.png", "090.png", "091.png", "092.png", "093.png", "094.png", 
      "096.png", "097.png", "102.png", "103-a.png", "104.png", "105-a.png", "113.png", "115.png", 
      "118.png", "119.png", "120.png", "121.png", "123.png", "125.png", "126.png", "127.png", "128.png", 
      "129.png", "130.png", "131.png", "132.png", "133.png", "134.png", "135.png", "136.png", "137.png", 
      "142.png", "143.png", "147.png", "148.png", "149.png", "165.png", "166.png", "167.png", "168.png", 
      "169.png", "170.png", "171.png", "172.png", "173.png", "174.png", "185.png", "186.png", "196.png", 
      "197.png", "198.png", "199.png", "200.png", "209.png", "210.png", "212.png", "215.png", "222.png", 
      "225.png", "227.png", "233.png", "235.png", "239.png", "240.png", "241.png", "242.png", "278.png", 
      "279.png", "283.png", "284.png", "296.png", "297.png", "299.png", "302.png", "318.png", "319.png", 
      "320.png", "321.png", "324.png", "327.png", "328.png", "329.png", "330.png", "339.png", "340.png", 
      "349.png", "350.png", "351.png", "359.png", "361.png", "362.png", "369.png", "370.png", "371.png", 
      "372.png", "373.png", "374.png", "375.png", "376.png", "408.png", "409.png", "410.png", "411.png", 
      "422.png", "433.png", "425.png", "426.png", "429.png", "430.png", "438.png", "440.png", "443.png", 
      "444.png", "445.png", "446.png", "447.png", "448.png", "456.png", "457.png", "461.png", "462.png", 
      "466.png", "467.png", "470.png", "471.png", "474.png", "476.png", "478.png", "506.png", "507.png", 
      "508.png", "524.png", "525.png", "526.png", "546.png", "547.png", "548.png", "549.png", "551.png", 
      "552.png", "553.png", "564.png", "565.png", "566.png", "567.png", "568.png", "569.png", "582.png", 
      "583.png", "584.png", "584.png", "587.png", "594.png", "627.png", "628.png", "629.png", "630.png", 
      "661.png", "662.png", "663.png", "674.png", "675.png", "700.png", "703.png", "704.png", "705.png", 
      "706.png", "707.png", "708.png", "709.png", "718.png", "722.png", "723.png", "724.png", "725.png", 
      "726.png", "727.png", "728.png", "729.png", "730.png", "731.png", "732.png", "733.png", "734.png", 
      "735.png", "736.png", "737.png", "738.png", "739.png", "740.png", "741.png", "741-p.png", 
      "741-pau.png", "741-s.png", "742.png", "743.png", "744.png", "745.png", "745-m.png", "746.png", 
      "746-s.png", "747.png", "748.png", "749.png", "750.png", "751.png", "752.png", "753.png", 
      "754.png", "755.png", "756.png", "757.png", "758.png", "759.png", "760.png", "761.png", "762.png", 
      "763.png", "764.png", "765.png", "766.png", "767.png", "768.png", "769.png", "770.png", "771.png", 
      "772.png", "773.png", "774.png", "775.png", "776.png", "777.png", "778.png", "779.png", "780.png", 
      "781.png", "782.png", "783.png", "784.png", "785.png", "786.png", "787.png", "788.png", "789.png", 
      "790.png", "791.png", "792.png", "793.png", "794.png", "795.png", "796.png", "797.png", "798.png", 
      "799.png", "800.png", "801.png" }; 

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       JFrameMain frame = new JFrameMain(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public JFrameMain() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JLabel lblPhoto = new JLabel(""); 
    lblPhoto.setBorder(new LineBorder(new Color(128, 0, 128))); 
    lblPhoto.setBounds(21, 11, 391, 227); 
    contentPane.add(lblPhoto); 

    Timer timer = new Timer(800, new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      int n = (int) Math.floor(Math.random() * 300); 
      String image = images[n]; 
      lblPhoto.setIcon(new ImageIcon("src\\images\\" + image)); 
     } 
    }); 
    timer.start(); 

    } 
} 

我想知道是否有一种方法来让这个,说当我按下MOUSE1,图像开始滚动,然后说3秒,土地上的后图片。

然后在按下另一个按钮它会重复。

任何帮助,非常感谢。 (正如我所说,从来没有做过任何接近此之前)

+0

嗨,欢迎来到Stack Overflow。 不要期望其他用户为你编写代码,自己尝试,显示你的努力并发布你的代码。 :) –

+0

@ ema.jar我做到了,它在顶部。 –

+0

你的问题仍然有些模糊。我试图回答它,但只能给出一般性建议。如果您需要进一步帮助,请提出澄清,并显示您尝试过的内容,并告诉我们它是如何工作的。 –

回答

2

一般建议:

  • 阅读图像一次在程序启动,而不是定时的ActionListener的范围内,并把它们存储在一个集合中,可能是Image或ImageIcon的ArrayList。
  • 在定时器的ActionListener中交换ImageIcons,但不要在图像中重新读取不必要的内容。
  • 您在构造函数中声明的关键变量太多,因此在类的其他部分不可见(超出范围)。从构造函数中获取Timer的声明和图像显示JLabel,并将它们作为类中的实例字段。
  • 在您的JButton的ActionListener中启动计时器,每隔xxx毫秒随机更改一次图像。
  • 在同一个定时器的ActionListener中,让它在3秒钟后停止,要么通过重复定时器直到计数达到从3000除以毫秒延迟获得的值,要么使用delta系统时间检查3秒3000毫秒)。