java - JLabel 未显示在框架或面板上

标签 java jlabel

我正在制作一个计算器作为 Java 类的期末考试,但我遇到了一个导致项目所有进展停止的问题。我已经将面板上的所有按钮放在框架上,但由于某种原因,我似乎无法获得包含输入数字的 JLabel 来显示在框架上。我知道我可能错过了一些愚蠢的东西,但我们将不胜感激。

包装等级:

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

public class CalculatorFrame
{
public static void main (String[] args)
{

    JFrame frame = new JFrame ("Calculator");
    JPanel primary = new JPanel();
    JPanel numPad = new JPanel();
    JPanel textPanel = new JPanel();

    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

    textPanel.add(new NumberText());

    //Grid layout for buttons
    numPad.setLayout(new GridLayout(4, 3));

    //Number Buttons
    numPad.add(new Button1());
    numPad.add(new Button2());
    numPad.add(new Button3());
    numPad.add(new Button4());
    numPad.add(new Button5());
    numPad.add(new Button6());
    numPad.add(new Button7());
    numPad.add(new Button8());
    numPad.add(new Button9());
    numPad.add(new ButtonNeg());
    numPad.add(new Button0());
    numPad.add(new ButtonDec());

    primary.add(textPanel,BorderLayout.NORTH);
    primary.add(numPad, BorderLayout.SOUTH);

    frame.getContentPane().add(primary);
    frame.pack();
    frame.setVisible(true);
}
}

JLabel 类:

import javax.swing.*;

public class NumberText extends JLabel
{
private JLabel opNumLabel;
private String opNum;
private double storeNum = 0;
private boolean firstOp = true;

public void NumberText()
{
    opNum = "ur mom lol";
    opNumLabel = new JLabel (" " + opNum);
}

最佳答案

您的代码中实际上有两个 JLables,其中一个是 NumberText 类扩展的,您不向其中添加任何文本,并且要添加到 GUI,其中一个保留 在您添加文本的同一个类中,但您没有添加到 GUI。

解决方案:不要创建一个类来覆盖 JLabel - 如果您不扩展其行为,则无需这样做。相反,只需使用单个 JLabel。

其他问题:

  • 您将希望将大部分代码从 main 方法中取出并放入其所属的类中。
  • 使用数组或 ArrayList 来简化编码和调试。
  • 你真的为每个按钮都有一个新类吗?这是您真正不想要的调试和维护噩梦。相反,您会想要使用 JButton 并更改其文本和监听器。
  • 这一切都表明您过度使用继承,而在大多数情况下您会希望支持组合。

关于java - JLabel 未显示在框架或面板上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37240689/

相关文章:

java - 将静态文本添加到 Java Swing 菜单的最佳方法是什么?

java - 哪种设计模式允许基于运行时类型抽象功能?

java - ini4j 错误地解析节名称为 [mm/yyyy] 的 .ini 文件?

JavaFX 11 : IllegalAccessError when creating Label

java - For 循环会停止我的 swing 应用程序,直到循环完成

java - 单击按钮将 ImageIcon 更改为另一张图片

java - 实例缓存清理

java - 在 Java 中实现 "Selenium driver pool"的正确方法是什么?

java - 如何使用JLabel和Swing Timer来短暂通知用户?

java - 为什么我的 JLabel 图标没有出现?