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;
}
} 展开
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;
}
} 展开
4个回答
展开全部
首先你要搞清楚计算器里面的逻辑关系!
外面是窗体JFrame,里面是面板Jpanel,面板里面是组建(即你的按钮之类的东西)。
class CalPanel extends JPanel implements ActionListener
你的面板是这个CalPanel 并且实现一个监听事件。 但是你没有把面板添加进来,你只是定义了而已。
超级搞笑的是class CalPanel extends JPanel implements ActionListener这是一个类,它居然写在Calculator这个类里面。 我无语!
乱的要死!
所以说,你这个东西没有修改的必要。直接扔了吧。
差点忘了,记得给分!有疑问可以加我。扣扣:五九五呃呃呃就要要
外面是窗体JFrame,里面是面板Jpanel,面板里面是组建(即你的按钮之类的东西)。
class CalPanel extends JPanel implements ActionListener
你的面板是这个CalPanel 并且实现一个监听事件。 但是你没有把面板添加进来,你只是定义了而已。
超级搞笑的是class CalPanel extends JPanel implements ActionListener这是一个类,它居然写在Calculator这个类里面。 我无语!
乱的要死!
所以说,你这个东西没有修改的必要。直接扔了吧。
差点忘了,记得给分!有疑问可以加我。扣扣:五九五呃呃呃就要要
展开全部
你的CalPanel 没有被添加到Frame中,试试在main方法中加上frame.add();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采用无布局形式的就可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在main函数中没有调用其他类的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询