Java 图形不会出现
无论我做什么,我都不能在屏幕上显示矩形/直线/椭圆形。我检查了其他绘制图形的源代码,但当我执行这些代码时,我没有在窗口上显示任何图形。下面是教科书中的示例Java 图形不会出现,java,Java,无论我做什么,我都不能在屏幕上显示矩形/直线/椭圆形。我检查了其他绘制图形的源代码,但当我执行这些代码时,我没有在窗口上显示任何图形。下面是教科书中的示例 import java.awt.*; import javax.swing.*; class PlotGraph { public static void main (String [] args) { JFrame win; Container contentPane; Graphics g; wi
import java.awt.*;
import javax.swing.*;
class PlotGraph
{
public static void main (String [] args) {
JFrame win;
Container contentPane;
Graphics g;
win = new JFrame("testing");
win.setSize(300,200);
win.setLocation(100,100);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
contentPane = win.getContentPane();
g = contentPane.getGraphics();
g.drawRect(10, 30, 50, 50);
}
}
哎哟。那你应该换课本了。首先,对Swing组件的所有访问都必须在中完成
其次,您不应该获取组件的图形并在其上绘制。相反,您应该扩展JComponent或JPanel,重写其
paintComponent(Graphics)
方法,并使用作为参数传递的图形对象(实际上是Graphics2D
实例)进行绘制。那你应该换课本了。首先,对Swing组件的所有访问都必须在中完成
其次,您不应该获取组件的图形并在其上绘制。相反,您应该扩展JComponent或JPanel,重写其
paintComponent(Graphics)
方法,并使用作为参数传递的Graphics对象(实际上是Graphics2D
实例)进行绘制。这不是图形在Swing中的工作方式
您需要将组件添加到框架中,而不仅仅是在其上绘制。你永远不想直接在画框上画画。它没有执行任何操作的原因是图形代码被重写
如果希望组件具有自定义图形代码,请创建JComponent
的子类,并重写paintComponent(Graphics)
方法。您应该如何执行此操作的示例如下:
import java.awt.*;
import javax.swing.*;
class PlotGraph {
public static void main(String[] args) {
JFrame win;
win = new JFrame("testing");
win.setSize(300, 200);
win.setLocation(100, 100);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
win.setContentPane(new MyComponent());
}
}
class MyComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
g.drawRect(10, 30, 50, 50);
}
}
我强烈建议您在线查看。这不是Swing中图形的工作方式 您需要将组件添加到框架中,而不仅仅是在其上绘制。你永远不想直接在画框上画画。它没有执行任何操作的原因是图形代码被重写 如果希望组件具有自定义图形代码,请创建
JComponent
的子类,并重写paintComponent(Graphics)
方法。您应该如何执行此操作的示例如下:
import java.awt.*;
import javax.swing.*;
class PlotGraph {
public static void main(String[] args) {
JFrame win;
win = new JFrame("testing");
win.setSize(300, 200);
win.setLocation(100, 100);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
win.setContentPane(new MyComponent());
}
}
class MyComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
g.drawRect(10, 30, 50, 50);
}
}
我强烈建议您在线查看。出于好奇,这是什么书?Thomas WU的《Java面向对象编程》,第5版。第257页我也看到了这个关于图形的视频,但我也遇到了同样的问题,图形没有出现,但在视频中,它为解释它的人做了解释——出于好奇,这是什么书?Thomas WU的《面向对象Java》,第五版。第257页我也看到了这个关于图形的视频,但我也遇到了同样的问题,图形没有出现,但在视频中,它为解释它的人提供了-+1链接到Swing教程-1用于在帧可见后添加组件,并且不执行EDT.WChargin上的代码-我有一个问题。它可以工作,但paintComponent方法是如何被调用的?就像什么东西叫它。。我所看到的是,我们创建了MyComponent类的一个新对象,它有一个void方法。如果我有不止一种方法怎么办?绘画是由重绘经理决定/安排的。Rock out可获得更详细的描述+1可链接到Swing教程-1用于在帧可见后添加组件,并且不执行EDT.WChargin上的代码-我有一个问题。它可以工作,但paintComponent方法是如何被调用的?就像什么东西叫它。。我所看到的是,我们创建了MyComponent类的一个新对象,它有一个void方法。如果我有不止一种方法怎么办?绘画是由重绘经理决定/安排的。摇出一个更详细的描述