как сделать JLabel обновить в JFrame - PullRequest
0 голосов
/ 25 сентября 2018

Как мне сделать мой JLabel в своем обновлении JFrame, чтобы обновить процентное соотношение, вот мой код ниже

public void start1(){

    URL resource = getClass().getResource("Graphitebackground.v2.jpg");


    ImageIcon i2a = new ImageIcon(resource);
    URL resource3 = getClass().getResource("Graphitebackground.v4.jpg");
    JFrame TFrame = new JFrame();
    TFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    TFrame.setVisible(true);
    int JW = TFrame.getWidth();
    int JH = TFrame.getHeight();
    TFrame.dispose();


    ImageIcon i3a = new ImageIcon(resource3);
    URL resource1 = getClass().getResource("Graphitebackground.v3.jpg");
    ImageIcon i1a = new ImageIcon(resource1);  
    Image image = i2a.getImage();
    Image newimg = image.getScaledInstance(JW, JH,  java.awt.Image.SCALE_SMOOTH);
    i2a = new ImageIcon(newimg);
    URL resource4 = getClass().getResource("Loading1.gif");
    ImageIcon i4a = new ImageIcon(resource4); 
    Image image1 = i4a.getImage();
    int JW2 = JW*40;
    JW2 = JW2/100;
    int JH2 = JH*40;
    JH2 = JH2/100;
    int diffrence = JW2-JH2;
    JW2= JW2-diffrence;
   Image newimg1 = image1.getScaledInstance(JW2, JH2, java.awt.Image.SCALE_DEFAULT);
   i4a = new ImageIcon(newimg1);
   final ImageIcon i6a = i2a;
   final ImageIcon i5a = i4a;
   try {
                FileOutputStream saveFile = new FileOutputStream("Loader.sav");
                ObjectOutputStream save = new ObjectOutputStream(saveFile);
                save.writeObject(i5a);



                save.close();
            } catch (Exception exc) {
                exc.printStackTrace();
            }
    Thread t3 = new Thread(new Runnable() {
                public void run() {
    try{
    FileInputStream saveFile = new FileInputStream("Done.sav");
    ObjectInputStream save = new ObjectInputStream(saveFile);
    done = (int) save.readObject();





    save.close();
    }
    catch(Exception exc){
    exc.printStackTrace();
    }

   JLabel loading = new JLabel(i5a);

    int Percentage = 90;
    System.out.println(done);
    Percentage =done*100;
    Percentage = Percentage/total;
    System.out.println(Percentage);
    loading.setVerticalTextPosition(JButton.CENTER);
    loading.setHorizontalTextPosition(JButton.CENTER);
    loading.setForeground(Color.red);
    loading.setFont(new Font("Arial", Font.BOLD,50));
    String text="Loading "+Percentage+"%";
    loading.setText(text);


    JPanel panel = new JPanel();
    JLabel p = new JLabel(i6a);
     p.setLayout(new GridBagLayout());








    p.add(loading);
    panel.add(p);

    JFrame f1 = new JFrame();
    f1.add(panel);
    f1.setExtendedState(JFrame.MAXIMIZED_BOTH);
    f1.setVisible(true);
    f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    try {

        TimeUnit.MILLISECONDS.sleep(1000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Frametemplate.class.getName()).log(Level.SEVERE, null, ex);
        }

    if (done>=total){
        try {

        TimeUnit.MILLISECONDS.sleep(3000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Frametemplate.class.getName()).log(Level.SEVERE, null, ex);
        }


        new MainMenu().Start1();
        try {

        TimeUnit.MILLISECONDS.sleep(3000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Frametemplate.class.getName()).log(Level.SEVERE, null, ex);
        }
        f1.dispose();


    }
    else{
        f1.dispose();
        this.run();



    }
                }
    });
    t3.start();









}

В основном код получает изображения, изменяющие их размеры в соответствии с размером экрана, но вместо закрытия старого кадра иПри создании нового мне нужна помощь, чтобы просто обновить JLabel. Я отвечаю на другие вопросы, которые говорят, что нужно просто установить текст, но это не работает, и я попытался нарисовать его, но было очень трудно настроить запуск GIF и его запуск.правильное место, и он до сих пор не перекрасил так, пожалуйста, кто-нибудь может помочь.Спасибо

...