【问题标题】:drawing pixels in java在java中绘制像素
【发布时间】:2014-02-03 22:28:04
【问题描述】:

我一次又一次地尝试掌握基本的 Java 编程,但我编写的所有程序中出现的大量错误让我辞职了。这次我尝试通过逐行添加或循环来设置一个像素,然后再设置一个系列。

import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Points extends JPanel {
    BufferedImage image = new BufferedImage(300, 200, BufferedImage.TYPE_INT_ARGB);
    rgb = 0xFF00FF00; // green
    image.setRGB(1, 1, rgb);

  public static void main(String[] args) {
    Points points = new Points();
    JFrame frame = new JFrame("Points");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(points);
    frame.setSize(250, 200);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

Points.java:7: error: <identifier> expected
    rgb = 0xFF00FF00; // green
       ^
Points.java:8: error: <identifier> expected
    image.setRGB(1, 1, rgb);
                ^
Points.java:8: error: illegal start of type
    image.setRGB(1, 1, rgb);
                 ^
Points.java:8: error: illegal start of type
    image.setRGB(1, 1, rgb);
                    ^
Points.java:8: error: <identifier> expected
    image.setRGB(1, 1, rgb);
                          ^

5 个错误

在代码部分是我得到的错误。

【问题讨论】:

  • 我会推荐一个基本的Java教程,比如docs.oracle.com/javase/tutorial/java/nutsandbolts/…
  • 您忘记指定rgb的数据类型。
  • (很可能数据类型应该是“int”,所以整行应该是int rbg = 0xFF00FF00; // green
  • 他还试图在任何方法之外调用image.setRGB()
  • 主要问题是您在方法之外声明了方法调用。您放置在类声明下的第三行代码应该放在构造函数 (public Points() {..}) 或其他地方。除此之外,您必须声明rgb 的类型(只需将其更改为int rgb = .. 即可修复),正如其他人所提到的。总的来说,我建议在尝试诸如此类的更复杂任务之前先习惯该语言的基本语法。

标签: java pixel bufferedimage


【解决方案1】:

rgb 未定义,因此编译器不知道应该如何处理它。

您还试图在执行上下文之外执行一段代码。

public class Points extends JPanel {
    BufferedImage image = new BufferedImage(300, 200, BufferedImage.TYPE_INT_ARGB);
    // Invalid decleration, rgb is undefined
    rgb = 0xFF00FF00; // green
    // execution of code outside of a execution context
    image.setRGB(1, 1, rgb);

声明rgb

int rgb = 0xFF00FF00; // green

image.setRGB(1, 1, rgb); 移动到适当的执行上下文,例如方法或构造函数...

public Points () {
    image.setRGB(1, 1, rgb);

还要记住,像素数据是 0 索引的,这意味着第一个像素出现在 0x0

【讨论】:

  • 并阅读有关可见性修饰符的信息。您可能想为部分或全部成员变量添加“私有”。
【解决方案2】:

setRGB 方法将第三个参数作为int rgb 假设您想将像素着色为绿色

你必须先创建颜色类型的对象

Color myGreenColor=new Color(255,0,0);

然后你可以将它设置为像这样的图像

image.setRGB(i,j,myGreenColor.getRGB());

【讨论】:

  • 这没有多大意义。为什么你必须先指定一个颜色对象,才能得到一个 int 呢? OP 指定的rbg 的值很好并且是有效的颜色。
  • 对不起 Ziker。从技术上讲,OP 做的那部分是正确的。主要问题是他们在哪里做,这导致了他们的错误。
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多