gpt4 book ai didi

java - 如何在 JFXPanel 中添加图标

转载 作者:行者123 更新时间:2023-11-30 04:01:53 26 4
gpt4 key购买 nike

您好,我对 JavaFx 有点陌生,我在 Oracle 网站上获得了源代码,我想在 JFXPanel 中添加一个图标。如何在 JFXPanel 中插入图标​​。图标应该处于位置。这是代码:

public class Test {

private static void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");

final JFXPanel fxPanel = new JFXPanel();
JScrollPane pane = new JScrollPane(fxPanel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

frame.add(pane);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}

private static void initFX(JFXPanel fxPanel) {
// This method is invoked on the JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}

private static Scene createScene() {
ImageIcon icon=new ImageIcon ( "icon/filter.jpg" );
// add icon here
return (scene);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}

最佳答案

使用javafx.scene.image.Image代替ImageIcon并将Image添加到ImageView,这是一个可以添加到布局中的节点

Image icon = new Image("stackoverflow5.png", 300, 300, false, false);
StackPane pane = new StackPane();
pane.getChildren().add(new ImageView(icon));
Scene scene = new Scene(pane, 300, 300);

参见ImageImageView

<小时/>

Image 类中有关文件位置的注释

// The image is located in default package of the classpath
Image image1 = new Image("/flower.png", true);

// The image is located in my.res package of the classpath
Image image2 = new Image("my/res/flower.png", 100, 150, false, false);

// The image is downloaded from the supplied URL through http protocol
Image image3 = new Image("http://sample.com/res/flower.png", 100, 0, false, false);

// The image is located in the current working directory
Image image4 = new Image("file:flower.png", 0, 100, false, false);
<小时/>

这是一个简单的例子

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class StackJavaFx extends Application {

@Override
public void start(Stage primaryStage) {

Image icon = new Image("stackoverflow5.png", 300, 300, false, false);
StackPane pane = new StackPane();
pane.getChildren().add(new ImageView(icon));
Scene scene = new Scene(pane, 300, 300);

primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}
<小时/>

enter image description here

关于java - 如何在 JFXPanel 中添加图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com