2013-05-02 77 views
0

我想用Java创建一些形状,我创建了两个矩形并且它们正常显示,但最近我集成了一个多边形形状代码,但它在运行程序时没有显示出来。请有人帮忙!未在Java中显示多边形形状

下面是运行后的截图:

enter image description here

这里是我使用的代码:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class shapes extends JPanel{ 
int midX = 120; 
int midY = 60; 
int radius[] = {118,40,90,40}; 
int nPoints = 16; 
int[] X = new int[nPoints]; 
int[] Y = new int[nPoints]; 
int i; 
double max; 

public void paintComponent(Graphics gphcs){ 
super.paintComponent(gphcs); 
this.setBackground(Color.WHITE); 

gphcs.setColor(Color.BLUE); 
gphcs.fillRect(25,25,100,30); 

gphcs.setColor(Color.GRAY); 
gphcs.fillRect(25,65,100,30); 

gphcs.setColor(new Color(190,81,215)); 
gphcs.drawString("This is my text", 25, 120); 

for (double current=0.0; i<nPoints; i++) 
{ 
    double x = Math.cos(current*((2*Math.PI)/max))*radius[i % 4]; 
    double y = Math.sin(current*((2*Math.PI)/max))*radius[i % 4]; 

    X[i] = (int) x+midX; 
    Y[i] = (int) y+midY; 
} 
gphcs.setColor(Color.RED); 
gphcs.fillPolygon(X, Y, nPoints); 
} 
} 

NOTE:事实上我想要的多边形显示为一星形状,但它甚至没根本不会出现!

谢谢..

+0

您是否尝试过调试或打印x和y以确保协调看起来有效? – John3136 2013-05-02 01:05:50

+0

你从来没有设置'max'的值,所以我会期待异常,因为在for循环中除以0 – joshuahealy 2013-05-02 01:05:57

+0

也许当你除以max时,你应该真的除以nPoints? – joshuahealy 2013-05-02 01:06:44

回答

4

所有的多边形坐标都是一样的。尝试

for (int i=0; i < nPoints; i++) { 
    double x = Math.cos(i * ((2 * Math.PI)/nPoints)) * radius[i % 4]; 
    double y = Math.sin(i * ((2 * Math.PI)/nPoints)) * radius[i % 4]; 

    X[i] = (int) x + midX; 
    Y[i] = (int) y + midY; 
} 
+0

完美!这解决了它。谢谢你的帮助 :) – 2013-05-02 01:21:00