gpt4 book ai didi

java - 将 swing GUI 更改为处理 GUI

转载 作者:行者123 更新时间:2023-12-02 11:33:20 27 4
gpt4 key购买 nike

我正在尝试运行 https://github.com/anfractuosity/LSD正在处理中。
GUI.java 不兼容,因为它使用 swing 的 GUI。
我怎样才能改变它,以便它调用Processing的GUI?
我尝试了一些组合
https://forum.processing.org/two/discussion/12774/embedding-papplet-in-java-jframe
但我做不到。

import javax.swing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;



public class GUI extends JFrame {


GUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


try {
BufferedImage myPicture = ImageIO.read(new File("piet.jpg"));
Graphics2D g2d = myPicture.createGraphics();
int x = myPicture.getWidth();
int y = myPicture.getHeight();

HashSet<Line> lines = new HashSet<Line>();


double [] arr = myPicture.getData().getPixels(0,0,x,y,new double[x*y*3]);

double [] arr2 = new double[x*y];

System.out.println(arr.length);
int c=0;
for(int i = 0; i < arr.length-3; i+=3) {
double B = arr[i];
double G = arr[i+1];
double R = arr[i+2];
double level = R * 0.2126 + G * 0.7152 + B * 0.0722;
arr2[c++] = level;
}

LSD lsd = new LSD();

double [] out = lsd.lsd(arr2,x,y);

for(int i = 0; i < lsd.n_out; i++) {
for (int j = 0; j < 7; j++)

lines.add(new Line(out[7 * i + 0], out[7 * i + 1],
out[7 * i + 2], out[7 * i + 3]));

}

for ( Line l : lines) {
g2d.drawLine((int)l.x1,(int)l.y1,(int)l.x2,(int)l.y2);
}

JLabel picLabel = new JLabel(new ImageIcon(myPicture));
add(picLabel);


} catch (IOException e) {

}

setSize(800,800);
setVisible(true);
}


public static void main(String [] args){
new GUI();

}


}

最佳答案

您不能只更改一些内容并让此代码在处理中工作。 Swing 和Processing 是完全不同的。

您必须退后一步并了解您的代码的作用。用英语描述它的作用。然后使用该英语并实现在处理中完成相同任务的代码。

为了让事情顺利进行,这里有一些区别:

  • 处理使用 PApplet 而不是 JFrame
  • 处理使用 PImage 而不是 BufferedImage
  • 处理使用 PVector 类而不是 Point
  • Processing 没有像 JLabel 这样的组件。

但正如我所说,这并不只是替换几个关键字并使其起作用那么简单。您必须程序执行的操作,然后在处理中执行该操作。

更多信息可以在the reference中找到。请尝试一些事情,并发布 MCVE如果你被卡住了。祝你好运。

关于java - 将 swing GUI 更改为处理 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121625/

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