我已成功编译并运行以下代码,但applet窗口除了空格外什么都没显示,可能是什么问题?
我在尝试创建Jframe程序时不试图创建applet
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//<applet code="calc.class" width=400 height=200></applet>
public class calc extends JFrame implements ActionListener {
JFrame f1;
JPanel p1 = new JPanel();
JLabel l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
l16, l17, l18, l19, l20, l21, l22, l23, l24;
JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15,
b16;
JTextField t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
public void init() {
f1 = new JFrame("Administrator");
p1.setLayout(new GridLayout(3, 2));
p1.add(l1);
p1.add(t1);
p1.add(l2);
p1.add(b1);
p1.add(b2);
f1.add(p1);
f1.setSize(300, 300);
f1.setVisible(true);
}
public void actionPerformed(ActionEvent AE) {
}
public void main(String[] args) {
calc s = new calc();
s.init();
}
}
在CMD窗口中,我得到以下异常
java.lang.ClassCastException: calc cannot be cast to java.applet.Applet
at sun.applet.AppletPanel.createApplet(AppletPanel.java:795)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:724)
at sun.applet.AppletPanel.run(AppletPanel.java:378)
at java.lang.Thread.run(Thread.java:722)
修改
根据您的评论,我添加了一个Main类,并将文件名更改为cool.java,仍然无法正常工作
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//<applet code="calc.class" width=400 height=200></applet>
public class calc extends JFrame implements ActionListener
{
JFrame f1;
JPanel p1=new JPanel();
JLabel l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15,l16,l17,l18,l19,l20,l21,l22,l23,l24;
JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16;
JTextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
public void init()
{
f1=new JFrame("Administrator");
p1.setLayout(new GridLayout(3,2));
p1.add(l1);p1.add(t1);p1.add(l2);
p1.add(b1);p1.add(b2);
f1.add(p1);
f1.setSize(300,300);
f1.setVisible(true);
}
public void actionPerformed(ActionEvent AE)
{
}
}
public class cool
{
public static void main(String[]args)
{
calc s=new calc();
s.init();
}
}
答案 0 :(得分:6)
你犯了很多错误......
this
”。 / LI>
我建议:
init()
方法中,将其contentPane填充到GUI组件中。答案 1 :(得分:1)
一些即时评论:
我认为您需要重新阅读并重新阅读如何处理Applet和Java。
编辑,因为OP已经回来并尝试编辑他们的问题以使其更具相关性,我将尝试进一步充实。
我相信@MadProgrammer提供的答案可能是最简洁的,并提供了最详细的地方。
我要做的另一件事就是提到Java不再“捡起来”。 (当前目录)作为类路径的一部分,除非明确说明。
要运行此程序,您应尝试使用以下命令启动:
java -cp . Calc
最近不鼓励'默认'包中的类。考虑放入包装中。
答案 2 :(得分:1)
添加已发布的所有优秀答案......
你没有初始化任何东西,所以你的所有组件都是null
,这是基本的Java / Swing。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calc extends JFrame implements ActionListener {
// JFrame f1; // Don't need this, as you are already extending from a JFrame!!
JPanel p1 = new JPanel();
JLabel l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24;
JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16;
JTextField t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
public Calc() {
super("Administrator");
// You've not initalised anything, so it would normally throw a NullPointerException
p1 = new JPanel(new GridLayout(3, 2));
l1 = new JLabel("l1");
t1 = new JTextField(2);
l2 = new JLabel("l2");
b1 = new JButton("B1");
b2 = new JButton("B2");
p1.add(l1);
p1.add(t1);
p1.add(l2);
p1.add(b1);
p1.add(b2);
add(p1);
// Use pack instead...
// setSize(300, 300);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent AE) {
}
public static void main(String[] args) {
Calc s = new Calc();
}
}
我会(严重地)回去阅读
我还建议您阅读Code Conventions for the Java Programing Language(AKA如何结交朋友和影响他人)