Обновление образа JLabel в Netbeans (извините, пользователь GUI Builder)

Я прошел через пару вопросов, и я хотел бы извиниться заранее. Я знаю, что общий совет заключается в том, что лучше начинать без использования графических интерфейсов, чтобы лучше понимать работу, так как я понимаю, что создание графического интерфейса в руках новичка похоже на решение целого без реального знания о части.

Три важных компонента - это imageArea, toBoatBtn и toRespBtn. Я уже установил " Пользовательский код создания " imageArea в Netbeans на " новый loadImage (1); " для загрузки первого изображения. И это немного хорошо.

Две кнопки должны изменить изображение в imageArea. Предполагается, что toBoatBtn загружает 2-е изображение (loadImage (2)), а toRespBtn - загрузку исходного изображения (loadImage (1)).

Я не знаю, как продолжить этот процесс. Это не меняет изображения. Я пытался провести повторную проверку и перерисовку, изменить наследование на JPanel и внести в него изменения, но все равно не повезло. Это не случай неправильного имени пути для 2-го изображения, потому что, если я установлю "Пользовательский код создания" в Netbeans на "новый loadImage(2);", он также появится. Я действительно хочу продолжить с этим вместо использования JLabel.setIcon(параметр), потому что есть перспектива увеличения и изменения положения изображения (я даже не могу понять это, так что это определенно шатко). Я ценю любую помощь.

(Я удалил пустые комментарии и код, который netbeans не позволяет вам трогать.)

package source;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;

class loadImage extends JLabel {

BufferedImage img;

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img,0,0,getWidth(),getHeight(),this);
                System.out.println("\nImgWidth: " + img.getWidth()
                            + "\nFrameWidth: " + getWidth()
                            + "\nImgHeight: " + img.getHeight()
                            + "\nFrameHeight: " + getHeight()
                           );
}

public loadImage(int imageToUse) {
    System.out.println("Image Num: " + imageToUse);
   try {
       if(imageToUse == 1)
       {
           img = ImageIO.read(new File("resp.png"));
       }
       else 
       {
           img = ImageIO.read(new File("boat.png"));         
       }
   } catch (IOException e) {}

}
}

/****************************************************************/
public class NewJFrame extends javax.swing.JFrame{

public NewJFrame() {
    initComponents();
    setLocationRelativeTo(null);

}

private void toBoatBtnActionPerformed(java.awt.event.ActionEvent evt)     {                                         
    imageArea = new loadImage(2);
    super.revalidate();  
    super.repaint();                
}                                        

private void toRespBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
    imageArea = new loadImage(1);
    super.revalidate();   
    super.repaint();
}                                        


public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new NewJFrame().setVisible(true);
        }
    });


}

// Variables declaration - do not modify                     
private javax.swing.JLabel imageArea;
private javax.swing.JButton toBoatBtn;
private javax.swing.JButton toRespBtn;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel workspace;
// End of variables declaration                   

}

РЕДАКТИРОВАТЬ: изменения loadImage

public loadImage() {

    try {
        img = ImageIO.read(new File("resp.png"));
    } catch (IOException ex) {}

}

public void setImage(int imageToUse)
{
   System.out.println("Image Num: " + imageToUse);
   try {
       if(imageToUse == 1)
       {
           img = ImageIO.read(new File("resp.png"));
       }
       else 
       {
           img = ImageIO.read(new File("boat.png"));         
       }
   } catch (IOException e) {
   }
}

РЕДАКТИРОВАТЬ: проблема решена благодаря Fast Snail. Помощь была высоко оценена! Я также буду читать о методе setIcon, который предложил Hovercraft Full of Eels.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)    {                                         
     ((loadImage)imageArea).setImage(2);
     this.repaint();
 }  

0 ответов

Другие вопросы по тегам