Member 12734886 Ответов: 0

Как заставить вызываемый класс работать после установки переменных в java.


Я создаю java-приложение, которое использует JFrame для сбора входных данных пользователя и хранения данных в отдельном классе, который затем в конечном итоге представит данные на веб-сайте.
В рамках этого проекта я пытаюсь получить изображение определенного размера 150x150 пикселей.

Я использую эти снипы своего кода...

public void actionPerformed(ActionEvent evt) {
        if(evt.getSource() == browseButton)
        {
            JFileChooser fileChooser = new JFileChooser();
            if (fileChooser.showOpenDialog(imageField) == JFileChooser.APPROVE_OPTION) {
                imageDirectory = fileChooser.getSelectedFile().getPath().toString();
                if(imageDirectory.contains(".png")){
                    imageFile = fileChooser.getSelectedFile();
                    imageDirectory = imageFile.getPath();
                    // load from file
                    
                    imageField.setText(imageDirectory);
                }
                else{
                    imageDirectory = "";
                    JOptionPane.showMessageDialog(null, "image must be of type '.png'");
                }
            }
        }
        else if(evt.getSource() == submitButton){
            CommiteeData member = new CommiteeData();
            member.position = (String) positionBox.getSelectedItem();
            member.name = nameField.getText();
            member.age = ageBox.getSelectedItem().toString();
            member.course = courseField.getText();
            member.reason = reasonField.getText();
            member.advice = adviceField.getText();
            member.memory = memoryField.getText();
            member.fightScene = fightsceneField.getText();
            member.other = otherField.getText();
            
            if(imageDirectory != ""){
                try {
                    File resourcesFolder = new File("C:\\KungFuCommiteeWebForm\\build\\classes\\resources");
                    imageFile.renameTo(new File(resourcesFolder + "\\avatar" + member.name + ".png"));
                    member.avatar = ImageIO.read(imageFile);
                } catch (IOException ex) {
                    Logger.getLogger(KungFuInterface.class.getName()).log(Level.SEVERE, null, ex);
                    
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
            else{
                try {
                    member.avatar = ImageIO.read(new File("C:\\KungFuCommiteeWebForm\\build\\classes\\resources\\avatar.png"));
                } catch (IOException ex) {
                    Logger.getLogger(KungFuInterface.class.getName()).log(Level.SEVERE, null, ex);
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
            
            JOptionPane.showMessageDialog(null, "Your profile has been submitted.");
            
            System.exit(0);
        }
    }


 public class CommiteeData {
    public String position;
    public String name;
    public String age;
    public String course;
    public String reason;
    public String memory;
    public String advice;
    public String fightScene;
    public String other;
    public BufferedImage avatar;
    
    public CommiteeData()
    {
        try{
            int[] size = new int[2];
            size[0] = avatar.getHeight();
            size[1] = avatar.getWidth();
            if((size[0] == 150) && (size[1] == 150))
            {
                avatar.getScaledInstance(150, 150, Image.SCALE_FAST);
            }
        }
        catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }
}


У меня возникла проблема, когда появляется сообщение об ошибке, для которого оно пусто.

Что я уже пробовал:

Я попытался прокомментировать JOptionPane в классе CommiteeData () и подтвердил, что существует проблема с кодом в вызываемом классе CommiteeData (). Это сводит его к одному из двух вопросов. Либо класс CommiteeData () вызывается без данных, предоставленных ему в предыдущем классе, либо возникает проблема с сохранением файла изображения в каталоге предыдущего класса. Есть ли способ выяснить это и найти решение этой общей проблемы?

NotPolitcallyCorrect

Да, обратитесь к документации для любой IDE, которую вы используете, о том, как использовать отладчик.

0 Ответов