java - 在java中画一条黑线

标签 java

下面是我正在做的项目。

问题出在方法 Plotline() 中。此方法需要三个变量,并且必须使用这些变量来绘制不应超出 JLable 的宽度和长度的黑线。

我试图在 for 循环中执行此操作,但我不知道如何在该项目中的变量和对象之间建立关系。

项目运行通过另一个类NewJFrame.java

import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class Image {
  private JLabel          label;
  private BufferedImage   image;
  private Color           color;
  private Color[][]       color_array;
  private Color[][]       temp_array;

public Image(JLabel _label, Color _color)
{
    label = _label;
    image           = new bufferedImage(label.getHeight(),label.getWidth(),BufferedImage.TYPE_INT_ARGB);
    color_array     = new Color[label.getWidth()][label.getHeight()];       
    color = _color;
    Background();
    Draw();
}

public void Background()
{
    for(int i = 0; i < color_array.length ; i++)
        for(int j = 0; j < color_array[i].length; j++)
            color_array[i][j] = color;

}
public void Plotline(int _x1, int _x2, int _y)
{
    Color tmp_color = new Color(0);
    for(int i=0; i <color_array.length-1; i++){
        Draw();
    }

}

public void Draw()
{
    for(int i = 0; i < color_array.length ; i++)
        for(int j = 0; j < color_array.length; j++)
            image.setRGB(i, j, color_array[i][j].getRGB());
    label.setIcon(new ImageIcon(image));
    label.repaint();
}
}

最佳答案

你是对的。不同方法中的变量之间没有联系。他们应该通过一些参数或类变量连接。 其实不应该这么复杂。一种方法足以划清界线。这是固定代码:

import java.awt.Color;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {

    public Test() {
        JFrame frame = new JFrame("Test");
        JLabel label = new JLabel("Hello, World!");
        frame.add(label);

        frame.setSize(300, 200);
        frame.setVisible(true);

        new Image(label, Color.BLACK).Plotline(10, 90, 100);
        frame.repaint();
    }

    public static void main(String a[]) {
        new Test();
    }
}

// /
class Image {
    private JLabel label;
    private BufferedImage image;
    private Color color;
    private Color[][] color_array;
    private Color[][] temp_array;

    public Image(JLabel _label, Color _color) {
        label = _label;
        image = new BufferedImage(label.getHeight(), label.getWidth(),
                BufferedImage.TYPE_INT_ARGB);
        color_array = new Color[label.getWidth()][label.getHeight()];
        color = _color;
        Background();
    }

    public void Background() {
        for (int i = 0; i < color_array.length; i++) {
            for (int j = 0; j < color_array[i].length; j++) {
                color_array[i][j] = color;
            }
        }
    }

    public void Plotline(int _x1, int _x2, int _y) {
        int black_color = new Color(0).getRGB();
        for (int i = _x1; i < color_array.length - 1 && i < _x2; i++) {
            if (_y >= 0 && _y < color_array[i].length)
                image.setRGB(i, _y, black_color);
        }
        label.setIcon(new ImageIcon(image));
        label.repaint();
    }
}

关于java - 在java中画一条黑线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227703/

相关文章:

java - 创建情绪分析工具

java - 更新 primefaces 3.x 中不同页面上的组件

java - Jersey 不遵守@Produces 的响应媒体类型规则

java - 欧拉计划问题 18

java - 查看jar.exe是否可用

java - 修改 HashMap 的 HashMap 中的元素

java - 如何在 String 中获取 jsch shell 命令输出

java - 如何从 Hibernate 运行 SEQUENCE setVal

java - JAXB 将 xml 列表元素解码为单个 Kotlin 对象

java - 两个简单的弹跳球