java:为什么我的面板显示不出来

我参照一个计算器例子做得程序,没报错可是程序的布局和按键显示不出来,这是我的程序代码:importjava.awt.BorderLayout;importjava.awt... 我参照一个计算器例子做得程序,没报错可是程序的布局和按键显示不出来,这是我的程序代码:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {

public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setLayout(new BorderLayout());
frame.setVisible(true);
}

class CalPanel extends JPanel implements ActionListener {
public CalPanel() {
JTextField display = new JTextField("0");
display.setEditable(false);
display.add(display, "North");
JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4));
JButton Num = new JButton("");
String buttons = "789/456*123-0.=+";
for (int i = 0; i < buttons.length(); i++)
Num.add(p, buttons.substring(i, i + 1));
display.add(p, "Center");

}

public void actionPerformed(ActionEvent evt) {
String s = evt.getActionCommand();
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {
if (start)
display.setText(s);
else
display.setText(display.getText() + s);
start = false;
} else {
if (start) {
if (s.equals("-")) {
display.setText(s);
start = false;
} else
op = s;
} else {
calculate(Double.parseDouble(display.getText()));
op = s;
start = true;
}
}
}

public void calculate(double n) {
if (op.equals("+"))
result += n;
else if (op.equals("-"))
result -= n;
else if (op.equals("*"))
result *= n;
else if (op.equals("/"))
result /= n;
else if (op.equals("="))
result = n;
display.setText("" + result);
}

private JTextField display;

private double result = 0;

private String op = "=";

private boolean start = true;

}
}
展开
 我来答
595222911
2009-12-31
知道答主
回答量:36
采纳率:100%
帮助的人:8.2万
展开全部
首先你要搞清楚计算器里面的逻辑关系!
外面是窗体JFrame,里面是面板Jpanel,面板里面是组建(即你的按钮之类的东西)。
class CalPanel extends JPanel implements ActionListener
你的面板是这个CalPanel 并且实现一个监听事件。 但是你没有把面板添加进来,你只是定义了而已。
超级搞笑的是class CalPanel extends JPanel implements ActionListener这是一个类,它居然写在Calculator这个类里面。 我无语!
乱的要死!
所以说,你这个东西没有修改的必要。直接扔了吧。
差点忘了,记得给分!有疑问可以加我。扣扣:五九五呃呃呃就要要
dreamzt
2009-12-30
知道答主
回答量:2
采纳率:0%
帮助的人:3482
展开全部
你的CalPanel 没有被添加到Frame中,试试在main方法中加上frame.add();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一涨再涨
2010-01-01 · 超过12用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:18.3万
展开全部
采用无布局形式的就可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旁夏侯山0u
2009-12-30 · TA获得超过237个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:210万
展开全部
你在main函数中没有调用其他类的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式