我正在尝试从在线抓取图像,然后使用它在Jframe表单上显示。 “Hello,World!”将显示,但图像不会显示。有什么想法吗?欢呼声。
JFrame frame = new JFrame();
frame.setSize(400, 400);
JLabel label = new JLabel("Hello, World!");
String path = "http://chart.finance.yahoo.com/z?s=GOOG&t=6m&q=l";
try {
URL url = new URL(path);
ImageIcon image = new ImageIcon(url);
JLabel imageLabel = new JLabel(image);
label.setOpaque(true);
frame.add(imageLabel);
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
} catch (MalformedURLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
答案 0 :(得分:1)
JFrame
默认使用BorderLayout
,这意味着只能在(默认)CENTER
位置显示一个组件。
基本上,发生了什么label
正在取代imageLabel
,而是显示出来,尝试做类似的事情。
JLabel imageLabel = new JLabel(image);
label.setOpaque(true);
frame.add(imageLabel);
//frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
有关详细信息,请参阅How to use BorderLayout
我还会使用ImageIO.read
ImageIcon
来加载,至少在加载图片时会抛出IOException
,请参阅Reading/loading images了解更多详情
答案 1 :(得分:0)
您似乎在代理服务器后面,而且您的代码无法连接到chart.finance.yahoo.com
请通过输入实际值
将代理设置添加到您的程序中 System.setProperty("http.proxyHost", "<your proxy ip>");
System.setProperty("http.proxyPort", "<proxy port>");
System.setProperty("http.proxyUser", "<proxy user>");
System.setProperty("http.proxyPassword", "<proxy password>");
或者,您也可以使用-D
开关将这些作为命令行参数提供。有关详细信息,请参阅:How to use proxy from java