Java 绘制多边形:找不到错误
我制作了一个程序来绘制多边形,但是多边形没有显示出来。我正在尝试修复我的代码Java 绘制多边形:找不到错误,java,swing,graphics,Java,Swing,Graphics,我制作了一个程序来绘制多边形,但是多边形没有显示出来。我正在尝试修复我的代码 public static class Polygon extends JPanel { public Polygon() { setBackground(Color.black); } public void paintComponent(Graphics p) { super.paintComponent(p); int[] lis
public static class Polygon extends JPanel {
public Polygon() {
setBackground(Color.black);
}
public void paintComponent(Graphics p)
{
super.paintComponent(p);
int[] list1 = {100,50,150,200};
int[] list2 = {50,100,200,150};
int n = 3;
drawAPolygon(list1,list2,n);
}
public void drawAPolygon(int[] xPoints, int[] yPoints, int numPoints){
Graphics p = getGraphics();
p.setColor(Color.yellow);
p.drawPolygon(xPoints, yPoints, numPoints);
}
}
我不知道你为什么有一个静态类,先改变它,然后尝试下面的建议 我会用paintComponent方法做所有的事情。这段代码对我来说很好:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Polygon extends JPanel {
public void paintComponent(Graphics p)
{
super.paintComponent(p);
int[] list1 = {100,50,150,200};
int[] list2 = {50,100,200,150};
int n = 3;
p.setColor(Color.yellow);
p.drawPolygon(list1, list2, n);
}
}
下面是一个带有main方法的runner类,您可以对其进行测试:
import javax.swing.JFrame;
public class DrawPolygon {
public static void main(String[] args) {
Polygon panel = new Polygon();
JFrame frame = new JFrame();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
这种颜色显示不好,也许有办法使它变厚?我不确定为什么要使用静态类,请先更改它,然后尝试下面的建议 我会用paintComponent方法做所有的事情。这段代码对我来说很好:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Polygon extends JPanel {
public void paintComponent(Graphics p)
{
super.paintComponent(p);
int[] list1 = {100,50,150,200};
int[] list2 = {50,100,200,150};
int n = 3;
p.setColor(Color.yellow);
p.drawPolygon(list1, list2, n);
}
}
下面是一个带有main方法的runner类,您可以对其进行测试:
import javax.swing.JFrame;
public class DrawPolygon {
public static void main(String[] args) {
Polygon panel = new Polygon();
JFrame frame = new JFrame();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
这种颜色显示不好,也许有办法使它变厚?getGraphics()
方法不适合您。但是您可以将图形作为参数传递
public static class Polygon extends JPanel {
public Polygon() {
setBackground(Color.black);
}
public void paintComponent(Graphics p)
{
super.paintComponent(p);
int[] list1 = {100,50,150,200};
int[] list2 = {50,100,200,150};
int n = 3;
drawAPolygon(p,list1,list2,n);
}
public void drawAPolygon(Graphics p, int[] xPoints, int[] yPoints, int numPoints){
p.setColor(Color.yellow);
p.drawPolygon(xPoints, yPoints, numPoints);
}
}
getGraphics()
方法不适合您。但是您可以将图形作为参数传递
public static class Polygon extends JPanel {
public Polygon() {
setBackground(Color.black);
}
public void paintComponent(Graphics p)
{
super.paintComponent(p);
int[] list1 = {100,50,150,200};
int[] list2 = {50,100,200,150};
int n = 3;
drawAPolygon(p,list1,list2,n);
}
public void drawAPolygon(Graphics p, int[] xPoints, int[] yPoints, int numPoints){
p.setColor(Color.yellow);
p.drawPolygon(xPoints, yPoints, numPoints);
}
}
这是正确的,但我想通过制作一个方法来实现这一点。这是正确的,但我想通过制作一个方法来实现这一点。我尝试了Graphics g=getGraphics();在方法内部,但这不起作用。是否有任何方法可以在方法内部初始化图形。当调用getGraphics()
方法时,任何更改都将是临时的,并且在下次重新绘制时会丢失。因此,您需要在paintComponent(Graphics g)
处初始化它,然后在方法中使用它。在drawAPolygon
内部没有初始化Graphics
的方法。我尝试了Graphics g=getGraphics();在方法内部,但这不起作用。是否有任何方法可以在方法内部初始化图形。当调用getGraphics()
方法时,任何更改都将是临时的,并且在下次重新绘制时会丢失。因此,您需要在paintComponent(Graphics g)
处初始化它,然后在方法中使用它。无法在drawAPolygon
内部初始化Graphics
。