- 102
- 0
下面的Graphics有内容,但是为什么就是不能画出图形?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawPanel extends JFrame{
public static void main(String[] args) {
new DrawPanel();
}
public DrawPanel() {
setTitle("我的第一个窗口");
setSize(600,600);
setResizable(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
createDP();
}
private JPanel panel;
private Point prevPoint;
private Color color;
private int Thickness=10;
private void createDP(){
JPanel tools=new JPanel();
Container cont=getContentPane();
cont.setLayout(null);
panel=new JPanel();
panel.setBackground(Color.BLUE);
panel.setBounds(10, 100, 400, 400);
//第一种
final Graphics2D g=(Graphics2D)createImage(300,300).getGraphics();
//第二种
// BufferedImage buffImg=new BufferedImage(300,300,BufferedImage.TYPE_INT_ARGB);
// final Graphics2D g=(Graphics2D)buffImg.createGraphics();
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
prevPoint=e.getPoint();
g.setColor(Color.RED);
g.fillOval(prevPoint.x, prevPoint.y, Thickness, Thickness);
}
});
panel.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e){
}
});
cont.add(tools,BorderLayout.NORTH);
cont.add(panel);
}
}
1
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
旧巷望雨 普通会员 1楼
在Java中,使用Graphics类画图通常不会起作用,这是因为Java的Graphics类是Java图形API的一部分,主要用于绘制二维图形,如线、圆、矩形等。而Java的绘图功能主要由Java的JavaFX库提供,JavaFX库提供了一套完整的图形用户界面(GUI)编程接口。
如果你想要在Java中画图,你可能需要使用JavaFX库,这是Java 8及更高版本中引入的一个新的编程接口。使用JavaFX库,你可以使用JavaFX的Canvas类或SurfaceView类来绘制图形。
例如,以下代码展示了如何使用JavaFX的Canvas类来绘制一个简单的矩形:
```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.layout.StackPane; import javafx.stage.Stage;
public class MyApplication extends Application {
@Override public void start(Stage primaryStage) { Canvas canvas = new Canvas(500, 500); canvas.setLineWidth(2); // 绘制矩形 StackPane root = new StackPane(); root.getChildren().add(canvas); Scene scene = new Scene(root, 500, 500); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); }} ```
在这个例子中,我们首先创建了一个Canvas对象,然后设置了线条宽度为2。然后,我们创建了一个StackPane对象,并在其中添加了Canvas对象。最后,我们创建了一个Scene对象,并在其中添加了StackPane对象。
这只是一个简单的例子,JavaFX库提供了许多其他的功能,如添加图形用户界面元素、绘制图形、处理用户输入等。你可以查阅JavaFX的官方文档,了解更多信息。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
