gpt4 book ai didi

java - 在 Swing 应用程序中嵌入 JFXPanel 在添加/删除时失败

转载 作者:行者123 更新时间:2023-11-30 08:06:28 26 4
gpt4 key购买 nike

当从 Swing 应用程序中添加和删除 JavaFX 面板时,它就不能再添加了。执行下面的测试并多次按“添加/删除 FXPanel”按钮 - 由于某种原因它只工作一次。

public class EmbeddedFXPanelTest extends JFrame
{
private JFXPanel fxPanel;

public static void main(String[] args) throws Exception
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
new EmbeddedFXPanelTest();
}
});
}

public EmbeddedFXPanelTest()
{
fxPanel = new JFXPanel();

add(new JButton(new AbstractAction("Add FXPanel")
{
@Override
public void actionPerformed(java.awt.event.ActionEvent evt)
{
JButton b = (JButton)evt.getSource();
if (fxPanel.getParent() == null)
{
add(fxPanel);
b.setText("Remove FXPanel");
}
else
{
remove(fxPanel);
b.setText("Add FXPanel");
}
revalidate();
repaint();
}
}), BorderLayout.NORTH);

Platform.runLater(new Runnable()
{
public void run()
{
createScene();
}
});

setTitle(getClass().getSimpleName());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
setVisible(true);
}

private void createScene()
{
FlowPane p = new FlowPane(10, 10);
p.getChildren().add(new Button("FX Button"));
p.getChildren().add(new CheckBox("FX CheckBox"));
p.setStyle("-fx-background-color:yellow");
fxPanel.setScene(new Scene(p));
}
}

最佳答案

Platform#setImplicitExit(false) 可以用来避免这个问题。

Platform.setImplicitExit(false);
Platform.runLater(new Runnable()
{
public void run()
{
createScene();
}
});

关于java - 在 Swing 应用程序中嵌入 JFXPanel 在添加/删除时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372260/

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