내 문제는 내가 정상적으로 시작하고 크기를 조정할 때 자동으로 요소를 재정렬하는 일반 JavaFX fxml 파일이 있다는 것입니다. 그러나 JFXPanel로 시작하면 갑자기 아무것도 다시 정렬되지 않습니다. 그 이유가 무엇인지 모르겠습니다. (이 방법을 사용하여 GUI를 시작해야합니다. 다른 방법은 없습니다.)
내 코드 :
final JFXPanel panel = new JFXPanel();
panel.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
super.componentResized(e);
// Maybe here some code?
}
});
JFrame frame = new JFrame();
Platform.runLater(() -> {
try {
Group root = new Group();
Scene scene = new Scene(root);
FXMLLoader loader = new FXMLLoader(getClass().getResource("myGui.fxml"));
Node node = loader.load();
root.getChildren().add(node);
panel.setScene(scene);
} catch (IOException e) {
e.printStackTrace();
}
});
frame.add(panel);
frame.pack();
frame.setVisible(true);
몇 시간 동안 조사했지만 내 문제에 대한 해결책을 찾지 못했습니다. 내가 잘못 검색했을까요? 누군가 나를 도울 수 있다면 정말 감사 할 것입니다.
나는 그룹 개체 "루트"에 대해 약간 의심 스럽지만 그것이 무엇을하는지 전혀 모른다. (나는 JFXPanels에 경험이 없어서 모든 라인이 무엇을하는지 완전히 확신하지 못하기 때문에 웹 사이트 에서이 코드를 가지고 있습니다)
내 전체 수업 :
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.startGui();
}
public void startGui() {
final JFXPanel panel = new JFXPanel();
panel.setPreferredSize(new Dimension(600, 400));
panel.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
super.componentResized(e);
// Maybe here some code?
}
});
JFrame frame = new JFrame();
Platform.runLater(() -> {
try {
Group root = new Group();
Scene scene = new Scene(root);
FXMLLoader loader = new FXMLLoader(getClass().getResource("myGui.fxml"));
Node node = loader.load();
root.getChildren().add(node);
panel.setScene(scene);
} catch (IOException e) {
e.printStackTrace();
}
});
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
그리고 내 fxml 파일
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.StackPane?>
<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children>
<StackPane prefHeight="150.0" prefWidth="200.0" HBox.hgrow="ALWAYS">
<children>
<Label text="left" />
</children>
</StackPane>
<StackPane prefHeight="150.0" prefWidth="200.0" HBox.hgrow="ALWAYS">
<children>
<Label text="right" />
</children>
</StackPane>
</children>
</HBox>
GUI를 시작하고 크기를 조정하면 왼쪽 및 오른쪽 레이블이 더 멀리 떨어져야합니다. GUI의 경계까지 동일한 거리를 가져야합니다.
기본적으로 사용 JFXPanel
하는에 JFrame
를 추가하고 BorderLayout
있습니다. 다른 레이아웃 관리자 세트
의 크기 및 위치를 변경하려면 JFXPanel
.
예를 들면 :
frame.setLayout(new GridBagLayout());
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다