import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class GraphicsTest
{
public static void main(String[] args)
{
new GraphicsFrame();
}
}
class GraphicsFrame extends JFrame
{
public void GraphicsFrame() {
setTitle("DrawTesting");
setSize(500,500);
setLocationByPlatform(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
GraphicsComponent gc = new GraphicsComponent();
add(gc);
}
}
class GraphicsComponent extends JComponent
{
public void paintComponent(Graphics g)
{
g.drawString("This is Java Testing",10,15);
g.drawRect(10,20,50,20);
g.fillRect(70,20,50,20);
Graphics2D g2 = (Graphics2D)g;//类型转换
Rectangle2D rect1 = new Rectangle2D.Double(10,50,50,20);
g2.draw(rect1);
Rectangle2D rect2 = new Rectangle2D.Double(70,50,50,20);
g2.fill(rect2);
}
}-----------------------------
上面的程序编译可以通过,但是运行的时候,却不会有图形显示出来,
但是把红色字体那行void去掉后,编译可以通过,图形也可以正常的显示出来, 这应该是正确的。但是我不明白,这里为什么不需要使用void ?
而在GraphicsComponent 类的构造函数中, 为什么必须要加void?
这两个有什么区别?
import java.awt.geom.*;
import javax.swing.*;
public class GraphicsTest
{
public static void main(String[] args)
{
new GraphicsFrame();
}
}
class GraphicsFrame extends JFrame
{
public void GraphicsFrame() {
setTitle("DrawTesting");
setSize(500,500);
setLocationByPlatform(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
GraphicsComponent gc = new GraphicsComponent();
add(gc);
}
}
class GraphicsComponent extends JComponent
{
public void paintComponent(Graphics g)
{
g.drawString("This is Java Testing",10,15);
g.drawRect(10,20,50,20);
g.fillRect(70,20,50,20);
Graphics2D g2 = (Graphics2D)g;//类型转换
Rectangle2D rect1 = new Rectangle2D.Double(10,50,50,20);
g2.draw(rect1);
Rectangle2D rect2 = new Rectangle2D.Double(70,50,50,20);
g2.fill(rect2);
}
}-----------------------------
上面的程序编译可以通过,但是运行的时候,却不会有图形显示出来,
但是把红色字体那行void去掉后,编译可以通过,图形也可以正常的显示出来, 这应该是正确的。但是我不明白,这里为什么不需要使用void ?
而在GraphicsComponent 类的构造函数中, 为什么必须要加void?
这两个有什么区别?
LZ看仔细啊,那个是普通方法。
构造方法是不能又返回值的哦 如果你想这样写的话 你可以在声明类的时候听一个 不过那就不是构造方法了 不过这样不会影响你的程序执行!
看到各位回复后,我去查了一下资料,
构造方法与其它方法的区别:
1: 构造方法的名称必须与类名相同
2: 构造方法不能有返回值
3: 用户不能直接调用构造方法,必须通过关键字new自动调用它.
非常非常感谢各位!