当前位置: 首页 > 知识库问答 >
问题:

如何使用java.awt.图形绘制圆?

龚睿
2023-03-14

我只是试图用DrawOval()方法画圆,当我运行程序时,它只显示小正方形。我试图将构造函数添加到Surface类,但它不起作用。这是我制作的代码:

    package swing22;

    import java.awt.BorderLayout;
    import java.awt.Color;
    import javax.swing.*;
    import java.awt.EventQueue;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;


    public class MyFrame {

        JFrame frame = new JFrame(" Test Frame ");
        JPanel panel = new JPanel();

        JButton button = new JButton("CLICK");
        JLabel label = new JLabel(" 33 ");

        public MyFrame(){

            gui();

        }

        public void gui(){

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    

            panel.setBackground(Color.GREEN);
            panel.add(button);
            panel.add(label);
            panel.add(new Surface());

            frame.add(panel, BorderLayout.CENTER);

            button.addActionListener(new Action());

            frame.pack();
            frame.setSize(300,300);
            frame.setVisible(true);
            frame.setResizable(false);

        }


        class Action implements ActionListener{
            @Override
            public void actionPerformed(ActionEvent arg0) {
                label.setText("new value");
            }
        }

    }


    class Surface extends JPanel {


            private void doDrawing(Graphics g) {

                Graphics2D g2d = (Graphics2D) g;

                    g.setColor(Color.red);
                    g.drawOval(80, 80, 30, 30);
                    g.fillArc(140, 140, 30, 30, 0, 90);
            }

            @Override
            public void paintComponent(Graphics g) {

                super.paintComponent(g);
                doDrawing(g);
            }
        }

共有2个答案

葛永丰
2023-03-14
use this class (Graphiic) and it's method (Draw_Circle)

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Graphics;
import javax.swing.JFrame;

public class Graphiic
{   
    public Graphics GClass;
    public Graphics2D G2D;
    public  void Draw_Circle(JFrame jf,int radius , int  xLocation, int             yLocation)
    {
        GClass = jf.getGraphics();
        GClass.setPaintMode();
        GClass.setColor(Color.MAGENTA);
        GClass.fillArc(xLocation, yLocation, radius, radius, 0, 360);           
    }
鱼征
2023-03-14

您没有设置组件大小,因此组件太小,无法显示圆圈。

调整部件尺寸,圆圈将正确显示

public void gui(){
    ....
    Surface s = new Surface();
    s.setPreferredSize(new Dimension(200, 200));
    panel.add(new Surface());
    ...
}

您可以通过设置或覆盖其getPreferedSize()-methode来调整组件的抓取

 类似资料:
  • 用Pixi绘制几何图形 使用图片纹理是制作精灵最有效的方式之一,但是Pixi也提供了自己低级的绘画工具。你可以使用它们来创造矩形、线段、复杂的多边形以及文本。并且它使用和Canvas Drawing API几乎一致的api,所以如果你熟悉canvas的话,那么几乎没有什么新东西需要学习。当然另一个巨大的优势在于,不同于Canvas的绘画api,你使用Pixi绘制的图形是通过WebGL在GPU上渲染

  • 问题内容: 使用Mobile Safari 转到http://m.google.com页面时,您会在页面顶部看到漂亮的栏。 我想那样画一些梯形(美国:梯形),但我不知道怎么做。我应该使用CSS3 3D转换吗?如果您有实现此目标的好方法,请告诉我。 问题答案: 您可以使用以下CSS: 制作所有这些形状真的很酷,请查看以下更漂亮的形状: http://css-tricks.com/examples/S

  • 我有一个名为pct的数据集 我想使用ggplot2或绘图包获得正条形图和负条形图。 给定下表中的数据集 我想得到这样的东西

  • 我有一个直方图,每个面元上有4个不同的对象,它们现在相互堆叠在一起。相反,我需要在同一个直方图框中并排绘制不同的对象(类似于https://matplotlib . org/3 . 1 . 1/gallery/statistics/histogram _ multi hist . html中的左上图): ,等在同一个样本内绘制不同标准的对象(和)。我看的所有示例都与我需要的略有不同,找不到正确的方

  • 我是数据可视化方面的新手。我正在练习海运,我正在尝试用这个数据帧绘制一个条形图。我希望图表有3条在每个符号上,然而,输出只有1条在每个符号上。我能知道怎么修吗? 数据帧的一部分... 代码如下所示: 输出如下:

  • 本文向大家介绍php使用GD2绘制几何图形示例,包括了php使用GD2绘制几何图形示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php使用GD2绘制几何图形的方法。分享给大家供大家参考,具体如下: 使用GD2函数不仅可以绘制线条图形,而且可以绘制填充图形,如填充圆形,填充矩形等。下面对GD2中常用的填充图形的绘制方法进行介绍。 bool imagefill( resource ima