import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
class game extends JFrame {
public game(){ //this is constructor
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(500,500);
frame.setTitle("Hello world");
}
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
Line2D line = new Line2D.Double(60,90,150,100);
g2.draw(line);
}
public static void main(String args[]) {
game l = new game();
}
}
以上代码是用Java编译的,但是在运行代码时,它仅显示框架及其标题,但不包括使用Graphics2D和Line2D绘制的任何线条,这是怎么回事? ?显示的框架没有显示任何内容,为什么????
答案 0 :(得分:3)
首先,您要创建并显示一个JFrame
而不是game
的实例,因此它不可能描绘{{1} 1}}。
无论如何,您通常通常不想创建paint
的子类来进行自定义绘画,只需创建game
的子类,然后将其设置为框架的内容窗格即可。
也不要覆盖JFrame
,而要覆盖JPanel
,这是负责绘制当前组件的方法。
您还应该调用paint
的父方法,以确保所有常规清洁操作均正确进行。
根据惯例,类名也应以大写字母开头。
最后一件事,只有添加完所有组件后才能使框架可见,否则有一天可能会遇到视觉故障。
将它们放在一起:
paintComponent
答案 1 :(得分:1)
在df = df.reset_index()
df.groupby('key').date.apply(lambda x: x.max())
类的构造函数调用方法中,使用此关键字是因为您在类中扩展了SELECT * FROM ads WHERE (latitude = 26.85005 AND longitude = 26.85393) AND (longitude = 80.94964 AND longitude = 80.96595) HAVING acos(sin(1.3963) * sin(latitude) + cos(1.3963) * cos(latitude) * cos(longitude - (-0.6981))) <= 0.1570
类。
JFrame
这可以解决您的问题。
答案 2 :(得分:0)
您不需要创建JFrame类的实例, 修改了您的构造函数,如下所示
public game(){ //this is constructor
setVisible(true);
setSize(500,500);
setTitle("Hello world");
}