gpt4 book ai didi

java - 如何让我的自定义排序颜色在我的 jframe 中工作?

转载 作者:行者123 更新时间:2023-12-01 14:38:34 25 4
gpt4 key购买 nike

我正在使用自定义颜色制作一个小应用程序来显示随机制作的颜色,颜色将是椭圆形,其下方是 RGB 分量编号。外部 JFrame 将有 3 个选项卡,用于按 RGB 饱和度从低到高对颜色进行排序,例如:粉色比红色浅,因此它将首先在列表中的红色下方进行分类。但我似乎在驱动程序之间发送排序后的颜色数据以对数据进行排序和驱动程序以绘制椭圆形时遇到问题。我收到错误消息“找不到符号”。如果有人指出我做错了什么,这将是一个很大的帮助。

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



public class Graphic extends JFrame
{

public static void main(String[] args)
{
ArrayList<Colorsorter> derp = new ArrayList<Colorsorter>();
Colorsorter oneColor = new Colorsorter(0,0,0);
int R;
int G;
int B;
Random colorgen = new Random();
for(int n = 0; n < 50; n++)
{
R = colorgen.nextInt(256);
G = colorgen.nextInt(256);
B = colorgen.nextInt(256);
oneColor = new Colorsorter(R,G,B);
derp.add(oneColor);
}

}
public Graphic()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,1000);
setVisible(true);
}
public void paint(Graphics page)
{
for(int h = 0; h < 10; h++)
{
for(int l = 0; l < 5; l++)
{
page.setColor(new Color(255,215,0));
page.drawOval(50+(l*100), 40+(h*100), 100, 40);
page.fillOval(50+(l*100), 40+(h*100), 100, 40);
page.setColor(new Color(0, 0, 0));
page.drawString("Red: " + oneColor.getRed()+ " " + "Green: " + oneColor.getGreen() + " " + "Blue: " + oneColor.getBlue(), 20+(100*l), 90+(100*h));
}
}

}
}

//驱动程序

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

public class Colorsorter extends Color implements Comparable <Colorsorter>
{
public Colorsorter()
{
super(0,0,0);
}

public Colorsorter (int r, int g, int b)
{
super(r,g,b);
}

public String toString()
{
return("Red: " + getRed() + " " + "Green: " + getGreen() + " " + "Blue: " + getBlue() + " " + "\n");
}

public int compareTo (Colorsorter colorsort)
{
return getRed() - colorsort.getRed();
}
}

我在第 44 行收到错误:Graphic.java:44:错误:找不到符号page.drawString("红色:"+ oneColor.getRed()+ ""+ "绿色:"+ oneColor.getGreen()......; ...................................................... ......................^

最佳答案

变量 oneColor 仅在 Graphicstatic main 方法的范围内可见,因此不是在 paint 方法中可用,因此会出现找不到符号编译错误消息。

为了利用 Swing 优化的绘制模型,自定义绘制是通过重写 paintComponent 而不是 paint 来完成的。还可以重写 super.paintComponent 来更新子组件。

因此,将自定义绘制功能移动到一个新组件,该组件是 JComponent 的子类,使用 oneColor 作为类成员变量。

链接:

关于java - 如何让我的自定义排序颜色在我的 jframe 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16229094/

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