gpt4 book ai didi

java - 如何在Java中画星星?

转载 作者:行者123 更新时间:2023-11-30 08:19:19 26 4
gpt4 key购买 nike

我想从某些点上画出一颗星。我的问题是它没有显示我的小星星的线条。我在这里缺少什么?我正在制作每个点,制作线条,设置颜色,但它只是没有显示我的星星。它确实显示了框架,但我认为问题不是框架,而是实际的大部分代码。你们建议尝试什么?

public class StarClass 
implements Icon {
static JFrame frame;
public static void main(String[] args) {
JFrame frame = new JFrame();

frame.setSize(400, 400);
frame.setTitle("My Star");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}


@Override
public void paintIcon(Component c, Graphics g, int x, int y) {

Graphics2D g2 = (Graphics2D) g;

//points
Point2D.Double pt1
= new Point2D.Double(100, 10);
Point2D.Double pt2
= new Point2D.Double(125, 75);
Point2D.Double pt3
= new Point2D.Double(200, 85);
Point2D.Double pt4
= new Point2D.Double(150, 125);
Point2D.Double pt5
= new Point2D.Double(160, 190);
Point2D.Double pt6
= new Point2D.Double(100, 150);
Point2D.Double pt7
= new Point2D.Double(40, 190);
Point2D.Double pt8
= new Point2D.Double(50, 125);
Point2D.Double pt9
= new Point2D.Double(0, 85);

//lines
Line2D.Double ln1
= new Line2D.Double(pt1, pt2);
Line2D.Double ln2
= new Line2D.Double(pt2, pt3);
Line2D.Double ln3
= new Line2D.Double(pt3, pt4);
Line2D.Double ln4
= new Line2D.Double(pt4, pt5);
Line2D.Double ln5
= new Line2D.Double(pt5, pt6);
Line2D.Double ln6
= new Line2D.Double(pt6, pt7);
Line2D.Double ln7
= new Line2D.Double(pt7, pt8);
Line2D.Double ln8
= new Line2D.Double(pt8, pt9);

//color of lines
g2.setColor(Color.BLUE);

//draw the lines
g2.draw(ln1);
g2.draw(ln2);
g2.draw(ln3);
g2.draw(ln4);
g2.draw(ln5);
g2.draw(ln6);
g2.draw(ln7);
g2.draw(ln8);

}

@Override
public int getIconWidth() {
return 200;
}

@Override
public int getIconHeight() {
return 200;
}
}

最佳答案

你应该找到一个比paintIcon更好的地方来完成这一切。
在您的情况下根本不会调用此方法。

这是您的代码已修复。看来您只是缺少 1-2 行
来自明星(这个问题你应该能够自己调试)。

import java.awt.*;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;

import javax.swing.*;

class DrawPanel extends JPanel {

private static final long serialVersionUID = 776058311964590886L;

public void paintComponent(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

// points
Point2D.Double pt1 = new Point2D.Double(100, 10);
Point2D.Double pt2 = new Point2D.Double(125, 75);
Point2D.Double pt3 = new Point2D.Double(200, 85);
Point2D.Double pt4 = new Point2D.Double(150, 125);
Point2D.Double pt5 = new Point2D.Double(160, 190);
Point2D.Double pt6 = new Point2D.Double(100, 150);
Point2D.Double pt7 = new Point2D.Double(40, 190);
Point2D.Double pt8 = new Point2D.Double(50, 125);
Point2D.Double pt9 = new Point2D.Double(0, 85);

// lines
Line2D.Double ln1 = new Line2D.Double(pt1, pt2);
Line2D.Double ln2 = new Line2D.Double(pt2, pt3);
Line2D.Double ln3 = new Line2D.Double(pt3, pt4);
Line2D.Double ln4 = new Line2D.Double(pt4, pt5);
Line2D.Double ln5 = new Line2D.Double(pt5, pt6);
Line2D.Double ln6 = new Line2D.Double(pt6, pt7);
Line2D.Double ln7 = new Line2D.Double(pt7, pt8);
Line2D.Double ln8 = new Line2D.Double(pt8, pt9);

// color of lines
g2.setColor(Color.BLUE);

// draw the lines
g2.draw(ln1);
g2.draw(ln2);
g2.draw(ln3);
g2.draw(ln4);
g2.draw(ln5);
g2.draw(ln6);
g2.draw(ln7);
g2.draw(ln8);
}
}

public class StarClass {

static JFrame frame;

public static void main(String[] args) {

DrawPanel panel = new DrawPanel();

JFrame frame = new JFrame();
frame.getContentPane().add(panel);

frame.setSize(400, 400);
frame.setTitle("My Star");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}

关于java - 如何在Java中画星星?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com