gpt4 book ai didi

Java GUI 功能 - 子类问题?

转载 作者:行者123 更新时间:2023-12-01 15:30:01 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序输出两个艺术家之间的最短路径(通过他们的整数 ID 得知)。开始和结束是两位艺术家使用的输入。我正在创建一个带有运行按钮和标签的 GUI。当按下按钮时,程序应该计算一条最短路径,然后将其作为字符串返回并设置为 GUI 的标签。最短路径看起来像这样 5 73 19 100,其中每个整数都是艺术家的 ID,5 是起始艺术家,100 是结束艺术家。

当我将最短路径代码(function() 中的代码)放在 main 中时,它工作得很好。但是,当我尝试结合获取 GUI 来运行它时,最终的字符串仅包含第一个艺术家。我的 da.run 似乎不再起作用了?这与它在另一个类中的事实有什么关系吗?

任何有关可能发生的情况的指示将不胜感激。这是所有相关的 GUI 代码,因为我认为这就是问题所在

public class ShortestPath extends JFrame {

private static Map<Integer, Artist> artists = new HashMap<Integer, Artist>();
private static Artist start, end;
private static ArtistGraph map = new ArtistGraph(artists);
private static DijkstrasAlgorithm da = new DijkstrasAlgorithm(map);
private static Route r = new Route();

private static Connection connection;
private static Statement statement;

private Container contentPane;
private JPanel panel1, panel2;
private JButton button1;
private JLabel label1, label2, label3;
private JTextField field1, field2;

public ShortestPath() {
//CODE FOR SETTING LABELS, PANELS, ETC REMOVED BECAUSE NOT RELEVANT FOR QUESTION
button1.addActionListener(new Listener());
panel1.add(button1);

pack();
setVisible(true);

}

private class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{

start = generateArtist(field1.getText());
end = generateArtist(field2.getText());
String done = function();


label3.setText(done);


}
}

public static String function(){
ArtistGraph map = new ArtistGraph(artists);
DijkstrasAlgorithm da = new DijkstrasAlgorithm(map);
da.run(start, end);

Route r = new Route();
r.calculateRoute(end, da);

for (int i = 0; i < r.getRoute().size(); i++) {
int artist_id = r.getRoute().get(i).getID();
System.out.println(artist_id);
}

String s = r.toString();

return s;
}

让我知道是否还有其他有用的代码。

最佳答案

没有足够的信息来识别您发布的代码中的特定缺陷。展望 future ,您可能需要查看 Model–View–Controller模式将您的模型(使用 Dijkstra's algorithm 搜索的图形)与 View (GUI 显示)隔离。讨论了一个例子here 。由于搜索可能需要一些时间才能完成,请考虑使用 SwingWorker ,如图here 。它将允许搜索继续进行,而不会阻止 GUI 的 event dispatch thread .

关于Java GUI 功能 - 子类问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650295/

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