установка чего-то расположенного или невидимого Java - PullRequest
2 голосов
/ 04 мая 2010

изменил проект с момента его работы сейчас. своего рода. изображение все еще не меняется.

package icnon;

import javax.imageio.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FrameIconExample extends JFrame implements ActionListener {

    JLabel j;
    JPanel p, l, k;
    JButton picOne, picTwo;
    Container cPane;

    public FrameIconExample() {
        JButton picOne = new JButton("picOne");
        JButton picTwo = new JButton("picTwo");
        picOne.setName("picOne");
        picTwo.setName("picTwo");

        picOne.addActionListener(this);
        picTwo.addActionListener(this);

        p = new JPanel(new GridLayout(2, 1));
        l = new JPanel(new FlowLayout());
        k = new JPanel(new FlowLayout());

        cPane = getContentPane();

        j = new JLabel(new ImageIcon(
            "../meet/src/images/beautiful-closeup-portrait-photography.jpg"));

        l.add(j);
        k.add(picOne);
        k.add(picTwo);
        p.add(l);
        p.add(k);

        add(p);
    }

    public static void main(String[] args) {
        FrameIconExample frame = new FrameIconExample();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(new Dimension(300, 800));
        frame.setTitle("Frame Icon Example");

        // Display the form
        frame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton temp = (JButton) e.getSource();
        String src = "../meet/src/images/Majken Kruse portrait - john.jpg";

        //System.out.println(src + " " + temp.getName());

        if (temp.getName().equalsIgnoreCase("picOne")) {
            try {

                l.hide();

                try {

                    src = "../meet/src/images/beautiful-closeup-portrait-photography.jpg";
                    System.out.println(src + " " + temp.getName());
                    Icon img;
                    j = new JLabel(new ImageIcon(src));

                    l.add(j);

                    System.out.println("1");
                } catch (Exception q) {
                    q.printStackTrace();
                }

                if (temp.getName().equalsIgnoreCase("picTwo")) {
                    src = "../icontest/images/Majken Kruse portrait - john.jpg";
                    System.out.println(src + " " + temp.getName());
                    Icon img;
                    j = new JLabel(new ImageIcon(src));
                    l.add(j);
                    System.out.println("2");
                }
            } catch (Exception x) {
                x.printStackTrace();
            }
        }
    }
}

извините за плохой отступ. я уверен, что метод l.add (j); причина, по которой изображение не меняется.

есть идеи, что это должно быть?

Ответы [ 3 ]

6 голосов
/ 04 мая 2010

Примечание: этот ответ был дан для пересмотров 1 и 2 вопроса.

Это не ошибка Awt, это исключение NullPointerException.

Ваше поле l равно нулю, поскольку в тот момент, когда вы думали, что создали его, вы фактически маскировали его локальной переменной.

JPanel p = new JPanel(new GridLayout(2, 1));
JPanel l = new JPanel(new FlowLayout());
JPanel k = new JPanel(new FlowLayout());

Должно быть:

p = new JPanel(new GridLayout(2, 1));
l = new JPanel(new FlowLayout());
k = new JPanel(new FlowLayout());

Прочитайте еще раз ошибку с трассировкой стека. Он сообщает вам, какая строка является проблемой, и тип ошибки сообщает вам, что произошло в этом случае.

2 голосов
/ 04 мая 2010

Проблема, с которой вы столкнулись, заключается в том, что вы объявляете глобальный JPanel с именем l, но затем, когда вы создаете экземпляр JPanel s в своем конструкторе, вы объявляете и назначаете локальную область действия JPanel с именем l.Когда вы пытаетесь добавить компонент в actionPerformed, вы пытаетесь добавить его в глобальную переменную null.

1 голос
/ 04 мая 2010

Я полагаю, вы не указали правильное местоположение изображения. Вы уверены, что изображения находятся в указанном вами месте? Какой IDE вы используете? Если вы используете Eclipse, обновление вашего проекта может помочь.

...