我想在JFXPanel
容器上添加和删除JFrame
但不能这样做。我被困在这里,按钮点击没有正确的解决方案我想添加和删除JFXPanel
控件。
此代码有什么问题?
public class abc extends JFrame
{
JFXPanel fxpanel;
Container cp;
public abc()
{
cp=this.getContentPane();
cp.setLayout(null);
JButton b1= new JButton("Ok");
JButton b2= new JButton("hide");
cp.add(b1);
cp.add(b2);
b1.setBounds(20,50,50,50);
b2.setBounds(70,50,50,50);
b1.addActionListener(this);
b2.addActionListener(this);
fxpanel= new JFXPanel();
cp.add(fxpanel);
fxpanel.setBounds(600,200,400,500);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("OK"))
{
fxpanel= new JFXPanel();
cp.add(fxpanel);
fxpanel.setBounds(600,200,400,500);
}
if(ae.getActionCommand().equals("hide"))
{
cp.remove(fxpanel);
}
}
public static void main(String args[])
{
abc f1= new abc();
f1.show();
}
}
答案 0 :(得分:2)
不要不必要地延长JFrame
来电
请勿使用null
/ Absolute
LayoutManager
为什么使用show()
设置JFrame
可见?你应该使用setVisible(true)
不要忘记应该通过Event Dispatch Thread
和JavaFX组件SwingUtilities.invokeXXX
通过Platform.runLater()
除了上述问题之外,您最大的问题是在添加/删除组件后不刷新GUI /容器,因此不会显示任何更改。
在revalidate()
个实例上调用repaint()
和JFrame
以反映从可见容器添加/删除组件后的更改。