Mat*_*son 5 java javafx image gridpane
我正在尝试制作一个在网格窗格中显示 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这可能是图像后的行和列的问题,但我尝试了一些方法但没有成功。任何帮助是极大的赞赏。谢谢
代码没有任何问题。问题出在第二张 gif 图片上。例如,如果您下载它并从项目资源加载它,它将正确加载。现在为什么你不能从 url“访问”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);
Run Code Online (Sandbox Code Playgroud)
您将看到第二个 gif 会给您一个错误 java.io.IOException ,服务器返回 HTTP 响应代码:403 for URL ...
所以我猜服务器不会通过 http 请求“授予”对 gif 图像的访问权限,这就是为什么你无法加载它。当涉及到 Https 请求时,我不是“专业人士”,所以我可能是错的。
通过上面的帖子,您可以稍微修改一下代码并加载它 find :
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);
Run Code Online (Sandbox Code Playgroud)
我追不上@flakes @tomorrow :P