我买了一本名为“学习Java”的新书,我正在努力解决以下问题。
它问我下面代码的类型,但现在它说我们将用我们自己的图形类替换JLabel。 HelloCompoent是他希望我创建的新图形类,它应该显示Hello Java。
import javax.swing.*;
public class Helloworld {
public static void main(String[]args){
JFrame frame = new JFrame ("Hello, Java");
JLabel label = new JLabel("Hello world", JLabel.CENTER);
frame.add(label);
frame.setSize(300,300);
frame.setVisible(true);
}
}
我试过
import javax.swing.*;
import java.awt.*;
public class Helloworld {
public static void main(String[]args){
JFrame frame = new JFrame ();
class HelloComponent extends JComponent{
public void paintComponent (Graphics g){
g.drawString("Hello, Java", 123, 95);
frame.add(new HelloComponent());
}
}
}
}
答案 0 :(得分:0)
声明你的课程后,你需要创建一个实例并将其添加到框架中:
HelloComponent helloComponent = new HelloComponent( );
frame.add(helloComponent);
frame.setSize(300,300);
frame.setVisible(true);
你可能应该删除 frame.add(new HelloComponent());
来自paintComponent-method。
只有在将类的实例添加到可访问框架的组件层次结构中时,才会调用paintComponent。所以你必须在调用paintComponent之前将它添加到框架中。因此,您可以从该方法中删除它。