【问题标题】:How to get my custom sorted colors to work in my jframe?如何让我的自定义排序颜色在我的 jframe 中工作?
【发布时间】:2013-04-20 04:39:47
【问题描述】:

我正在使用自定义颜色制作一个小应用程序来显示随机制作的颜色,颜色将是椭圆形,其下方的 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()....; ..................................................... .................... ^

【问题讨论】:

  • RE:我收到错误消息“找不到符号” - 请提供有关错误的所有详细信息:symbolline of code,等等。
  • 你能运行这个程序吗?因为您的 Graphic 类中有错误。 oneColor 在paint 方法中不可访问,因为它不是类字段,而是在main 函数中定义的。
  • 不,我无法运行它。不久前我只使用文本运行了一个类似的程序,但我现在正在编写程序,以便您可以实际看到它变得有条理。
  • 我该如何解决这个问题,我会抛出异常吗?
  • @Kreg,要修复此错误,您需要将它们定义为类字段。这样它们就可以从所有类函数中访问。

标签: java swing colors jframe paint


【解决方案1】:

变量oneColor仅在Graphicstaticmain方法范围内可见,因此在paint方法中不可用,因此找不到符号编译错误信息。

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

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

链接:

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多