gpt4 book ai didi

java - 在java中画一条黑线

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:27:49 25 4
gpt4 key购买 nike

下面是我正在做的项目。

问题出在方法 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/

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