我试图将图形卸载到另一个类,但是当我初始化该类时,我得到:
at java.security.AccessController.getContext(Unknown Source)
at java.awt.Component.<init>(Unknown Source)
at java.awt.Canvas.<init>(Unknown Source)
at Display.<init>(Display.java:11)
at Display.<init>(Display.java:7)
我研究发现有句话说我必须有一个没有参数的构造函数,但是该构造函数似乎无法解决问题。
----这是我初始化显示类的地方----
import java.util.Scanner;
public class Ytube2URL
{
public static void main(String[] args) {
Display d = new Display();
d.initGraphics();
String Userurl = askUserForURL();
System.out.println(Userurl);
String Downloadurl = GetYoutubeOnlyURL(Userurl);
}
}
-------这是我的Display课------
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Display extends Canvas
{
Display d = new Display();
JFrame f = new JFrame();
JOptionPane jo =new JOptionPane();
public Display()
{
}
public void initGraphics()
{
f.add(d);
f.setSize(200,600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jo.add(f);
f.pack();
}
}
感谢您的帮助和解释。
答案 0 :(得分:0)
您自己在创建new
的{{1}}实例。因此,每当您创建Display class
类型的对象时,它都会再次创建一个新对象,并且此过程一次又一次地递归进行。不要在Display
中创建新的Display
类型的对象。
工作代码:------显示类别------
Display class
答案 1 :(得分:0)
如果您需要在JFrame中添加显示,则可以执行f.add (this);
,因为this
使用initGraphics方法引用了Display对象