Java框架只显示空白空间

tec*_*hno -3 java applet swing awt jframe

我已成功编译并运行以下代码,但applet窗口除了空格外什么都没显示,可能是什么问题?

我不试图在这里创建一个小程序我试图创建一个Jframe程序

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

在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)
Run Code Online (Sandbox Code Playgroud)

编辑

根据你的意见,我添加了一个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();
 }
 }
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 6

你有很多错误......

  • 您似乎试图从HTML代码中运行此类,就好像它是一个applet,并且由于它不是applet,因此您收到错误.
  • 你的类扩展了JFrame并显示它,但......
  • 你将所有组件放在另一个 JFrame中,并且没有任何东西放入你实际上试图显示的JFrame中,当前对象是" this".

我建议:

  • 放弃上面的代码.对不起,但它完全没有价值,不值得尝试"保存".重来.
  • 如果您需要显示小程序,请不要使用JFrame.
  • 而是创建一个扩展JApplet的类,并在其init()方法中,将其contentPane与GUI组件一起填充.
  • 如果要显示独立类,则使用JFrame.
  • 如果是这样,那么不要让你的类扩展JFrame,而是简单地使用JFrame对象并显示它.
  • 将您的类代码转换为创建JPanel,然后在JFrame中显示它.
  • 阅读Swing GUI教程,了解有关如何创建Swing GUI的所有详细信息,但是applet和standalone.

  • @techno:***NO***,你不用applet viewer显示JFrames.您只需将它们作为标准Java类运行即可. (3认同)