gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:55:45 26 4
gpt4 key购买 nike

我正在制作一个计算器作为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com