账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java为什么用Graphics画图不起作用?
    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的官方文档,了解更多信息。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部