gpt4 book ai didi

java - 为什么打开网页的 JButton 仅在第一次单击时起作用,然后被停用?

转载 作者:行者123 更新时间:2023-11-29 03:20:48 25 4
gpt4 key购买 nike

我有一组 JButton,每个 JButton 都会打开一个单独的 YouTube 视频网页。第一次运行该程序时,我可以单击任何一个按钮并获取视频页面。当我尝试通过单击按钮获取另一个视频页面时,它不起作用 - 事实上,所有按钮都已停用。无论我是否关闭视频网页都是如此。

如何让所有按钮保持激活状态?提前致谢。

这里是引用代码。按钮链接和标签是从文本文件中填充的。

//import statements

public class VideoRecord extends JFrame {

private File videoRecordFile;

public VideoRecord() throws FileNotFoundException {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(2,2));
setSize(new Dimension(500, 500));
videoRecordFile = new File("videorecord.txt");
getButtons();
pack();
}

public void getButtons() throws FileNotFoundException {
Scanner input = new Scanner(videoRecordFile);
while (input.hasNextLine()) {
Scanner lineInput = new Scanner(input.nextLine());
while (lineInput.hasNext()) {
final String urlString = lineInput.next();
String buttonText = lineInput.next();
JButton btn = new JButton(buttonText);
add(btn);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
URL videoURL = new URL(urlString);
URLConnection videoConnection = videoURL.openConnection();
videoConnection.connect();
openWebpage(videoURL);
}
catch (MalformedURLException mue) {}
catch (IOException ioe) {}
setEnabled(false);
}
});
}
}
}

public static void openWebpage(URI uri) {
Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}

public static void openWebpage(URL url) {
try {
openWebpage(url.toURI());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}

public static void main(String[] args) throws FileNotFoundException {
VideoRecord vr = new VideoRecord();
}

最佳答案

花点时间看看你的代码...

btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
URL videoURL = new URL(urlString);
URLConnection videoConnection = videoURL.openConnection();
videoConnection.connect();
openWebpage(videoURL);
}
catch (MalformedURLException mue) {}
catch (IOException ioe) {}
setEnabled(false);
}
});

当你点击一个按钮时,你会调用 setEnabled(false);...

这实际上禁用了框架,而不是单击的按钮...

  1. 尝试使用 ((JButton)e.getSource()).setEnabled(false) 代替
  2. 不要盲目地丢弃你的Exception,它们提供了重要且有用的信息,可以帮助解决问题

关于java - 为什么打开网页的 JButton 仅在第一次单击时起作用,然后被停用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728360/

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