我正在制作一个计算器作为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);
}
答案 0 :(得分:1)
你的代码中实际上有两个 JLable,一个是NumberText类扩展的,你没有添加任何文本,并且你正在添加到GUI,一个持有 与您添加文本的同一个类,但您没有添加到GUI。
解决方案:不要创建一个类来覆盖JLabel - 如果你没有扩展它的行为就没有必要这样做。而只需使用一个JLabel。
其他问题:
答案 1 :(得分:0)
您扩展了JLabel,但您没有使用实例本身,而是创建了另一个$v = Validator::make($data, [
'per_type_id' => 'required|email'
]);
$v->sometimes('perTypeTime', 'required|max:500', function($input)
{
return $input->per_type_id == 1;
});
并使用它。试试这个:
JLabel opNumLabel
此外,您可能需要考虑是否确实需要此public class NumberText extends JLabel
{
private String opNum;
private double storeNum = 0;
private boolean firstOp = true;
public void NumberText()
{
super();
opNum = "ur mom lol";
this.setText(opNum);
}
}
,而不是使用普通NumberText
。