2016-07-31 10 views
0

i schrieb eine einfache Anwendung in JavaFx und wollen Gebrauch swingNode darin, so hatte ich ein Problem mit der Änderung der Größe oder Position meines Knotenjavafx Wechsel Größe des swingNode

public class SwingFx extends Application { 

    @Override 
    public void start (Stage stage) { 
     final SwingNode swingNode = new SwingNode(); 

     createSwingContent(swingNode); 

     StackPane pane = new StackPane(); 
     pane.getChildren().add(swingNode); 

     stage.setTitle("Swing in JavaFX"); 
     stage.setScene(new Scene(pane, 250, 150)); 
     stage.show(); 
    } 

    private void createSwingContent(final SwingNode swingNode) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JButton jButton = new JButton("Click me!"); 
       jButton.setBounds(0,0,5,5); 
       swingNode.setContent(jButton); 

      } 
     }); 
    } 
} 

i die Grenzen des JButton gesetzt aber es funktioniert nicht, wenn ich die app laufen die Taste in der Mitte erscheinen und in seiner Standardbreite und -höhe

Antwort

1

Sie einen übergeordneten Container verwendet werden soll, und legen das Layout auf null, wenn Sie setbounds() Arbeit

wollen
public class SwingFx extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start (Stage stage) { 
     final SwingNode swingNode = new SwingNode(); 

     createSwingContent(swingNode); 

     StackPane pane = new StackPane(); 
     pane.getChildren().add(swingNode); 

     stage.setTitle("Swing in JavaFX"); 
     stage.setScene(new Scene(pane, 250, 150)); 
     stage.show(); 
    } 

    private void createSwingContent(final SwingNode swingNode) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JButton jButton = new JButton("Click me!"); 
       jButton.setBounds(10,10,50,50); 

       JPanel panel = new JPanel(); 
       panel.setLayout(null); 
       panel.add(jButton); 

       swingNode.setContent(panel); 

      } 
     }); 
    } 
}