1

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();
    }
   }
4

1 に答える 1

2
  • JFrame不必要に電話を延長しないでください

  • 使わないnull/Absolute LayoutManager

  • なぜ可視show()に設定するのですか?JFrameあなたが使用する必要がありますsetVisible(true)

  • Swing コンポーネントを作成し 、JavaFX コンポーネントをEvent Dispatch Thread介して操作する必要があることを忘れないでください。SwingUtilities.invokeXXXPlatform.runLater()

上記に加えて、コンポーネントの追加/削除後に GUI/コンテナを更新しないため、変更が表示されないという最大の問題があります。

revalidate()およびrepaint()onインスタンスを呼び出しJFrameて、表示されているコンテナーからコンポーネントを追加/削除した後の変更を反映します。

于 2012-12-06T07:53:56.330 に答える