首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的链接2 Oval

java中的链接2 Oval
EN

Stack Overflow用户
提问于 2013-12-26 16:58:27
回答 1查看 1.1K关注 0票数 2

我正在键入链接到带有绘图行的圆圈,但我有一个问题,这里是我的代码:

代码语言:javascript
复制
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JPanel;

public class Panneau extends JPanel {

public void paintComponent(Graphics g){
 // declaration 
                String text = "test";
                int x = 250, y = 200;
                int height = 50, width = 50;


                g.setColor(Color.yellow);
                g.fillOval(x-height/2, y-width/2,width, height);
g.fillOval((x-height/2)+100, (y-width/2)+50,width, height);

                FontMetrics fm = g.getFontMetrics();
                double textWidth = fm.getStringBounds(text, g).getWidth();
                g.setColor(Color.black);
                g.drawString(text, (int) (x - textWidth/2),(int) (y + fm.getMaxAscent() / 2));
            g.drawString(text, (int) (x - textWidth/2)+100,(int) (y + fm.getMaxAscent() / 2)+50);
            g.setColor(Color.black);
            g.drawLine(x,y,x+100,y+50);



}
}

问题是,我画的线是从圆心开始画的,我想从圆上画线(就像图节点!)(谢谢你的帮助!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-26 17:12:30

实际上,我意识到有一种方法可以通过绘制不同顺序的图形元素来“破解它”。这仍然画出了整条线,但是..drawing在上面有效地“擦除了不需要的比特”!

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;

public class Panneau extends JPanel {

public void paintComponent(Graphics g){
    // declaration
    String text = "test";
    int x = 250, y = 200;
    int height = 50, width = 50;

    g.setColor(Color.black);
    g.drawLine(x,y,x+100,y+50);

    g.setColor(Color.yellow);
    g.fillOval(x-height/2, y-width/2,width, height);
    g.fillOval((x-height/2)+100, (y-width/2)+50,width, height);

    FontMetrics fm = g.getFontMetrics();
    double textWidth = fm.getStringBounds(text, g).getWidth();
    g.setColor(Color.black);
    g.drawString(text, (int) (x - textWidth/2),(int) (y + fm.getMaxAscent() / 2));
    g.drawString(text, (int) (x - textWidth/2)+100,(int) (y + fm.getMaxAscent() / 2)+50);
}

public Dimension getPreferredSize() {
    return new Dimension(400,280);
}

public static void main(String[] args) {
    Runnable r = new Runnable() {
        public void run() {
            Panneau p = new Panneau();
            JOptionPane.showMessageDialog(null, p);
        }
    };
    SwingUtilities.invokeLater(r);
}
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20788311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档