有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing内容窗格在java中不起作用

我明天早上就可以回复(我真的很累)

我如何做到这一点的来源: http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

这行代码给了我错误:

win1.getContentPane().add(emptyLabel, BorderLayout.CENTER);

我遇到的问题是:

emptyLabel

它抛出一个错误,并表示要更改为win1,win1不显示错误,而是抛出错误

全班:

package examplepackage;

//imports
import java.awt.BorderLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

import examplepackage.location.GetFilepath;

public class Starter {
public static void main(String[] args){
    GetFilepath FP = new GetFilepath();
    JFrame win1 = new JFrame("examplewindow");
    win1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    win1.getContentPane().add(emptyLabel, BorderLayout.CENTER);
    win1.pack();
    win1.setSize(600, 800);
    win1.setVisible(true);
    win1.setLocationRelativeTo(win1);
    win1.setIconImage(new ImageIcon(FP + "\\window\\Main").getImage());
}
}

共 (2) 个答案

  1. # 1 楼答案

    因此,基于您的示例,删除对GetFilePath的引用,因为我没有访问该源代码的权限,当我编译您的代码时,我得到

    error: cannot find symbol
            win1.getContentPane().add(emptyLabel, BorderLayout.CENTER);
                                      ^
      symbol:   variable emptyLabel
      location: class Starter
    

    这基本上意味着emptyLabel没有定义。您的IDE可能正在寻找一个可以传递给方法参数的匹配值,同样,根据您的代码,它会留下win1,这显然是不起作用的(您不能向自身添加某些内容,也不能向Container添加基于Window的组件)

    您需要定义和创建某个组件的实例,例如JLabel,例如

    JLabel emptyLabel = new JLabel();
    win1.getContentPane().add(emptyLabel, BorderLayout.CENTER);
    

    我还建议您通读Initial Thread,并确保在事件调度线程的上下文中初始化UI

  2. # 2 楼答案

    emmptyLabel从未初始化