Java Image抓取和显示

时间:2016-05-17 09:02:27

标签: java swing jframe

我正在尝试从在线抓取图像,然后使用它在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);
            }

2 个答案:

答案 0 :(得分:1)

JFrame默认使用BorderLayout,这意味着只能在(默认)CENTER位置显示一个组件。

基本上,发生了什么label正在取代imageLabel,而是显示出来,尝试做类似的事情。

Example

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