Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中设置已处理或不可见的内容_Java_Swing_Jframe_Visible - Fatal编程技术网

在java中设置已处理或不可见的内容

在java中设置已处理或不可见的内容,java,swing,jframe,visible,Java,Swing,Jframe,Visible,自项目现在开始工作以来,已更改该项目。有点。 图像仍然没有改变 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;

自项目现在开始工作以来,已更改该项目。有点。 图像仍然没有改变

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);这就是图像不改变的原因


你知道应该是什么吗?

我想你没有设置正确的图像位置。您确定图像位于您指定的确切位置吗?你用的是什么IDE?如果您使用Eclipse,刷新项目可能会有所帮助。

注意:这个答案是针对问题的修订版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());

使用堆栈跟踪再次读取错误。它告诉您哪一行是问题所在,错误的类型告诉您发生了什么,在这种情况下。

您遇到的问题是您声明了一个名为
l
的全局
JPanel
,但是当您在构造函数中实例化
JPanel
时,您可以声明并分配一个名为
l
的本地作用域
JPanel
。当您尝试在您的
actionPerformed
中添加组件时,您正在尝试将其添加到
null
global变量。

如果stacktrace可以包含在问题中,这会很有帮助。这是一个非常大的问题,但还可以。这是一个空指针例外,请问一个新问题。如果你编辑了问题的全部意思,那么答案就没有意义了。我建议您返回到上一个版本,或者更改标题以反映“修复异常”的情况,并在另一个问题中询问您现在写的内容。@Gnoupi这个问题不会变得很长且不切实际吗?@OVERTONE-这就是为什么您应该在另一个单独的问题中询问这个问题,重点是“图像不改变”问题。将当前问题回滚到我们回答时的状态。是的。图像很好。他们在正确的位置。什么是刷新?您可以进入项目浏览器,右键单击项目并点击“刷新”。如果新文件存储在您的工作区中,Eclipse需要刷新才能获取它们。就是这样!没有错误。不幸的是,图像仍然没有改变,但谢谢。@OVERTONE-JLabel有一个“setIcon”方法。如果要更改显示的图像,只需在JLabel上调用setIcon()。当前,您尝试向面板添加新的JLabel。如果您希望添加(而不是更改)一个新图像,您可能应该在面板上调用一个重新验证。我在写设置(src)应该是设置图标(img)谢谢