Java 为什么打开网页的按钮只有在第一次点击时才起作用,然后被停用?
我有一套JButton,每个按钮都会打开一个单独的YouTube视频网页。当我第一次运行这个程序时,我可以点击任何一个按钮并获得视频页面。当我试图通过点击按钮获得另一个视频页面时,它不起作用——事实上,所有按钮都被禁用。无论我是否关闭视频网页,情况都是如此 如何保持所有按钮处于激活状态?提前谢谢 这是代码供参考。按钮链接和标记从文本文件填充Java 为什么打开网页的按钮只有在第一次点击时才起作用,然后被停用?,java,swing,url,jbutton,Java,Swing,Url,Jbutton,我有一套JButton,每个按钮都会打开一个单独的YouTube视频网页。当我第一次运行这个程序时,我可以点击任何一个按钮并获得视频页面。当我试图通过点击按钮获得另一个视频页面时,它不起作用——事实上,所有按钮都被禁用。无论我是否关闭视频网页,情况都是如此 如何保持所有按钮处于激活状态?提前谢谢 这是代码供参考。按钮链接和标记从文本文件填充 //import statements public class VideoRecord extends JFrame { private File v
//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)代码>
这实际上禁用了框架,而不是单击的按钮
尝试改用((JButton)e.getSource()).setEnabled(false)
不要盲目地抛弃你的异常,它们提供了重要而有用的信息,可以帮助你解决问题
花点时间看看你的代码
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)代码>
这实际上禁用了框架,而不是单击的按钮
尝试改用((JButton)e.getSource()).setEnabled(false)
不要盲目地抛弃你的异常,它们提供了重要而有用的信息,可以帮助你解决问题
从你问题的标题,我猜你的代码会有空的catch块。我悲哀地发现我是对的。请解决这个问题,至少打印出stacktraces,您可能会发现问题,然后找到解决方案。一般来说,您几乎不应该像上面那样拥有空的catch块代码>?不要盲目地抛弃你的异常,它们提供了重要和有用的信息information@MadProgrammer:这应该是一个答案。@HovercraftFullOfEels我不想得到的involved@RobinK. 但是setEnabled
属于什么?从你问题的标题来看,我猜你的代码会有空的catch块。我悲哀地发现我是对的。请解决这个问题,至少打印出stacktraces,您可能会发现问题,然后找到解决方案。一般来说,您几乎不应该像上面那样拥有空的catch块代码>?不要盲目地抛弃你的异常,它们提供了重要和有用的信息information@MadProgrammer:这应该是一个答案。@HovercraftFullOfEels我不想得到的involved@RobinK. 但是setEnabled
属于什么?它会影响所有按钮吗?我只想一个点击按钮被禁用,但其他的应该继续工作。据说,这让我不必再看同一段视频两次。很高兴你参与其中。。。1 +哦,是的,谢谢。代码> StabelEng/<代码>是一种方法:<代码> jFrase>代码>,你已经禁用了这个框架……考虑使用更像<代码>((jButt).GETSoCube())的东西。我只想一个点击按钮被禁用,但其他的应该继续工作。据说,这让我不必再看同一段视频两次。很高兴你参与其中。。。1 +哦,是的,谢谢。代码> StabelEng/<代码>是一种方法:<代码> jFrase>代码>,你已经禁用了框架……考虑使用一些更类似于<代码>((jButt)E.GETSoCube())的方法。