如何在 java 中使用包含数组的参数调用图形方法?



我在主方法中调用图形方法时遇到挑战,以便它可以使用数组中的点绘制三角形。当我不使用数组而只使用常规数字时,绘画工作得很好,但程序的想法是用户在要使用的数组中输入值。关于如何制作三角形油漆的任何建议?这是代码:(我有所有正确的导入(

public class Summative extends JFrame{
static int[] inpoot() {
Scanner input = new Scanner(System.in);
int[] numbers = new int[6];
System.out.println("Please enter 3 sets of coordinates:");
for (int i = 0; i < 6; i++) {
numbers[i] = input.nextInt();
}
return numbers;
}
static void outpoot(int [] numbers) {
double A = Math.sqrt (Math.pow ((numbers[4] - numbers[2]), 2) + Math.pow ((numbers[5] - numbers[3]), 2));
double B = Math.sqrt (Math.pow ((numbers[4] - numbers[0]), 2) + Math.pow ((numbers[5] - numbers[1]), 2));
double C = Math.sqrt (Math.pow ((numbers[2] - numbers[0]), 2) + Math.pow ((numbers[3] - numbers[1]), 2));
double s = (A + B + C) / 2;
double area = (Math.sqrt (s * (s - A) * (s - B) * (s - C)));
System.out.println ("The area of the triangle entered is : " + area + " units squared.");
}
public static void main(String[] args) {
int[] numbers = inpoot(); 
outpoot(numbers); 
JFrame frame = new JFrame("Triangle");
frame.setVisible(true);
frame.setSize(new Dimension(500, 500));
JPanel panel = new myPanel();
frame.add(panel);
frame.validate(); 
frame.repaint();
}
}

这是图形类:

public class myPanel extends JPanel{
public void paint (int [] numbers, Graphics g) {
super.paint (g);
g.setColor (Color.BLACK);
int[] xTri = {numbers[0], numbers[2], numbers[4]};
int[] yTri = {500 - numbers[1], 500 - numbers[3], 500 - numbers[5]};
g.fillPolygon (xTri, yTri, 3);
}
}

您需要提供一些方法来将信息从您的方法传递到您的myPanelmain。 在您的情况下,您可以简单地提供一个自定义构造函数,例如...

public class myPanel extends JPanel{
private int[] xTri;
private int[] yTri;
public myPanel(int[] xTri, int[] yTri) {
this.xTri = xTri;
this.yTri = yTri;
}
public void paint (int [] numbers, Graphics g) {
super.paint (g);
g.setColor (Color.BLACK);
g.fillPolygon (xTri, yTri, xTri.length);
}
}

观察。。。

不要从JFrame扩展,无论如何您都在创建一个新实例,这只会混淆问题

由于 Swing 的工作方式,您需要确保在事件调度线程的上下文中启动 UI。 因此,在您的主要方法中,您应该使用...

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// Your UI code here
}
});

并在run方法中构建您的 UI

相关内容

最新更新