当前位置: 首页 > 知识库问答 >
问题:

如何在构造函数外部向Jpanel添加Jlabel?

谢泉
2023-03-14

我可以在Jpanel构造函数中使用add(new Jlabel())在我的Jpanel上创建label,但是一旦我使用其他函数调用add(),label就不会显示在面板上。我做错了什么?

public class DisplayPanel extends JPanel {


        JLabel headerField = new JLabel("Choose a file to generate report.");

        JLabel dateField = new JLabel("123");
        JLabel meanField = new JLabel("");

        JLabel minField = new JLabel("");

        JLabel maxField = new JLabel("");

        JLabel stdDevField = new JLabel("");

        public DisplayPanel() {
        super();
                setBackground(Color.white);
                setLayout(new GridLayout(6, 1));


        add(headerField);
        **//add(new JLabel("123")); this will work**

        }


        public void setFields(DataManager d)
        {
            dateField.setText(d.getStartDate() + " - " + d.getEndDate());
            meanField.setText("Mean: " + d.getMean());
            minField.setText("Min: " + d.getMin());
            maxField.setText("Max: " + d.getMax());
            stdDevField.setText("Std Dev: " + d.getStdev());
            this.add(new JLabel("123")); **//this doesn't work**
        }

共有1个答案

宣弘新
2023-03-14

为了使JPanel可见后出现任何新添加的组件,您需要调用revalidate(),通常调用repaint()。原因是…

add(new JLabel("123"));

在构造函数中工作JPanel在添加到其容器(通常是JFrame)时会被验证。在inialization阶段添加标签更简单,因为您只需要调用jlabel#settext,而不需要调用revalidate/repaint

 类似资料:
  • 有没有人可以帮助我理解为什么在向一个接受两个参数的类添加了一个新的构造函数之后,项目编译了,但是我的测试现在不能创建这个类的新实例? 我有一个例外: java.lang.nosuchmethoderror:pidac.workflow.testclass。(lcom/pidac/infrastructure/core/service/crudservice;lcom/pidac/infrastru

  • 我创建了一个JPanel,上面有我需要的所有JRadioButtons(称为PortSettings)。我还有一个按钮,叫做端口设置,当用户单击该按钮时,我需要JPanel上来显示单选按钮。我尝试将JPanel添加到actionlistener中,但没有效果。我的代码在下面。除了portsettings按钮之外,我已经从其他按钮中删除了所有其他ActionListener。如果这个问题让人困惑,我

  • 我刚刚开始使用servlet和JSP开发在线应用程序。您可能知道,我们需要一个doPost方法,它接收HttpServletRequest请求、HttpServletResponse(Response)参数。 我的问题如下。我知道我需要导入javax.servlet和javax.servlet.http.*包才能使其工作。我记得有一次,一个疯狂的老师告诉我,我可以修改我的jdk/jre/lib文件

  • 嗨,我在模拟考试中问了这个问题 在Java代码中,编写名为Student的类,该类具有以下特性:•一个初始化为零的私有实例变量int studentNumber。•私有实例变量字符串firstName;•私有实例变量字符串lastName;•一种构造函数,它采用一个整数参数和两个字符串参数来初始化三个相应的数据项签名等于(学生s)的公共方法。 目前为止这是我的代码 我的问题是如何在参数中添加整数,

  • 更新问题: 在这一点上,如果有人能给我任何提示,我可以添加任何类型的扩展在运行时在selenium中,我的目标是能够运行脚本,并让chrome安装扩展和活动,因为当你运行chromedriver时,chrome就像香草一样(没有安装或活动的扩展)我试过以下答案,但没有运气,我试过查找视频,查看文档,但我总是失败,如果有人有任何见解,我将非常感谢!!! 当我使用selenium时,我试图解除阻止or

  • 问题内容: 我的代码中有内部类。我想授予对其实例的公共访问权限,但是只有外部类才可以创建此实例,就像在“私有”访问权限中一样。是否可以不做适当的小包装(或为每个这样的内部类创建公共接口)? (对不起,如果我的英语不好:P) 问题答案: 有可能的。将 内部类 声明为 public,但将其构造函数声明为private 。这样,您只能在封闭的类及其内部内部创建它,而不能从外部创建它。