dimanche 25 décembre 2016

Choosing a random image with a click via JFrame application

I'm very new to Java, and need some help creating my random image picker.

My code so far:

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" };

/**
 * Launch the application.
 */
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();
            }
        }
    });
}

/**
 * Create the frame.
 */
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();

    }
}

I'm wondering if there's a way to make it so that, say when I press MOUSE1, the images start rolling, then after say 3 seconds, lands on an image.

And then on the press of another button it would repeat.

Any help is greatly appreciated. (As I said, never done anything close to this before)




Aucun commentaire:

Enregistrer un commentaire