我正在尝试制作一个在网格窗格中显示4个图像的简单程序。我得到一个没有问题,但一旦我尝试添加一秒我遇到一些问题。这是我的代码:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
GridPane gridPane = new GridPane();
gridPane.add(new ImageView(new Image ("http://gifimage.net/wp-content/uploads/2017/06/american-flag-gif-13.gif")), 1,1);
gridPane.add(new ImageView(new Image ("http://bestanimations.com/Flags/Asia/china/chinese-flag-waving-gif-animation-10.gif")), 2,2);
Scene scene = new Scene(gridPane, 1000, 500);
primaryStage.setTitle("Flags");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
我认为这可能是图像后面的行和列的问题,但我尝试了一些事情并没有成功。任何帮助是极大的赞赏。感谢
答案 0 :(得分:2)
flakes 是正确的,但它不是图像本身,而是它的可用性。如果我在浏览器中打开中国国旗的网址,一切正常,但请尝试修改后的代码:
['Matematika /', 'splnit do 21.', 'září (čtvrtek)\nnaučit se bezpodmínečně všechny tři mocninné vzorce\núkol byly příklady v sešitě na rozložení a složení vzorců\n\nAnglický jazyk /'
...
'lepidlo Kores,', 'tužky,', 'propiska či pero (modré)\n']
...我在TextField中得到的是:
服务器返回HTTP响应代码:403为URL:http://bestanimations.com/Flags/Asia/china/chinese-flag-waving-gif-animation-10.gif
HTTP 403 - 禁止访问
这似乎是罪魁祸首。
答案 1 :(得分:0)
代码没有问题。问题出在第二个gif图像上。例如,如果您下载它并从项目资源加载它将正确加载。现在为什么你不能访问"来自网址的gif是另一回事......我会检查它,如果我找到了什么,我会编辑这个答案。
编辑:
如果使用上面的代码加载图像,请进行一些调试:
gridPane.add( new ImageView(new Image(new URL( "http://gifimage.net/wp-content/uploads/2017/06/american-flag-gif-13.gif").openStream())), 0,
0);
gridPane.add(new ImageView(new Image(new URL("http://bestanimations.com/Flags/Asia/china/chinese-flag-waving-gif-animation-10.gif").openStream())),0, 1);
你会看到第二个gif会给你一个错误 java.io.IOException with Server返回HTTP响应代码:403 for URL ...
所以我猜服务器没有给出'通过http请求访问gif图片,这就是为什么你无法加载它。我不是一个专业的'当谈到Https请求时,我可能错了。
403 Forbidden with Java but not web browser?
使用上面的帖子,您可以稍微修改一下代码并加载它:
URL url = new URL("http://bestanimations.com/Flags/Asia/china/chinese-flag-waving-gif-animation-10.gif");
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
conn.connect();
GridPane gridPane = new GridPane();
gridPane.add(new ImageView(new Image(new URL("http://gifimage.net/wp-content/uploads/2017/06/american-flag-gif-13.gif").openStream())), 0,0);
gridPane.add(new ImageView(new Image(conn.getInputStream())), 0, 1);
我无法赶上@flakes @tomorrow:P