La mia domanda è semplice: in JavaFX, qual è la differenza tra uno Pane
e uno Group
? Non posso fare alcuna differenza.Differenza tra riquadro e gruppo
risposta
A Group
non è ridimensionabile (ovvero la sua dimensione non è gestita dal relativo genitore nel grafico di scena) e assume l'unione dei limiti dei relativi nodi figlio. (Quindi, in altre parole, i limiti locali di un Group
saranno il rettangolo più piccolo che contiene i limiti di tutti i nodi figlio). Se è più grande dello spazio che è assegnato al suo genitore, verrà ritagliato.
Al contrario, uno Pane
è ridimensionabile, quindi le sue dimensioni sono impostate dal suo genitore, che essenzialmente ne determina i limiti.
Ecco una breve demo. Lo Group
è in alto e lo Pane
in basso. Entrambi contengono un quadrato blu fisso a (100,100)
e un quadrato verde che viene spostato premendo i tasti freccia sinistra/destra. Nota come all'inizio il quadrato blu appare nell'angolo in alto a sinistra del gruppo, perché i limiti locali del gruppo iniziano nel punto più a sinistra di tutti i suoi nodi figli (cioè i limiti locali del gruppo si estendono da destra (100, 100)
e giù). Mentre si spostano i rettangoli verdi "fuori dallo schermo", il gruppo regola i propri limiti per incorporare le modifiche, laddove possibile, mentre il riquadro rimane fisso.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class GroupVsPaneDemo extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
Group group = new Group();
VBox.setVgrow(group, Priority.NEVER);
VBox.setVgrow(pane, Priority.NEVER);
VBox vbox = new VBox(group, pane);
Rectangle rect1 = new Rectangle(100, 100, 100, 100);
Rectangle rect2 = new Rectangle(100, 100, 100, 100);
Rectangle rect3 = new Rectangle(200, 200, 100, 100);
Rectangle rect4 = new Rectangle(200, 200, 100, 100);
rect1.setFill(Color.BLUE);
rect2.setFill(Color.BLUE);
rect3.setFill(Color.GREEN);
rect4.setFill(Color.GREEN);
group.getChildren().addAll(rect1, rect3);
pane.getChildren().addAll(rect2, rect4);
Scene scene = new Scene(vbox, 800, 800);
scene.addEventHandler(KeyEvent.KEY_PRESSED, e -> {
double deltaX ;
switch(e.getCode()) {
case LEFT:
deltaX = -10 ;
break ;
case RIGHT:
deltaX = 10 ;
break ;
default:
deltaX = 0 ;
}
rect3.setX(rect3.getX() + deltaX);
rect4.setX(rect4.getX() + deltaX);
});
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
I pochi importante differenza tra Pane e il Gruppo è che:
- Pane può avere la propria dimensione, dove come un gruppo assumerà i limiti collettivi dei suoi figli ed è non direttamente ridimensionabile.
- Il riquadro può essere utilizzato quando si desidera posizionare i nodi in posizione assoluta.
Penso che si possa usare anche un gruppo per posizionare i suoi nodi figli in una posizione assoluta (i parametri 'layoutX' e' layoutY' funzionano). – gbmhunter
Inoltre, si noti che Group è stato progettato per essere molto leggero e non supporta molti stili. Ad esempio, non è possibile impostare il colore di sfondo o di sfondo per il gruppo.
Vedere this answer per ulteriori dettagli.
- 1. Differenza tra cartella e gruppo in Xcode?
- 2. Differenza tra "gruppo" e "componente" in QuickFix/J
- 3. Differenza tra gruppo e sequenza nello schema XML?
- 4. dojox.gfx riquadro per il testo e del Gruppo nodi
- 5. Panda: gruppo per e differenza tabella pivot
- 6. Differenza tra groupId e scopeGroupId
- 7. vimdiff e sposta tra riquadro sinistro e destro
- 8. Differenza tra Outlook.Folder e Outlok.MAPIFolder
- 9. La differenza tra $ * e $ @
- 10. Differenza tra $ # e $ {# @}
- 11. Differenza tra. e #
- 12. MySQL: Differenza tra ",", "e"
- 13. Differenza tra "o" e "||"
- 14. Differenza tra unwrapObservable e()
- 15. Differenza tra oggetto e *?
- 16. Differenza tra "**/* /" e "** /"?
- 17. Differenza tra jquery e $
- 18. CMake: differenza tra $ {} e "$ {}"
- 19. Differenza tra ". +" E ". +?"
- 20. VBA: Differenza tra & e +
- 21. Differenza tra numpy.logical_and e &
- 22. Differenza tra | = e^= css
- 23. Differenza tra `% in%` e `` ==
- 24. Get differenza di tempo tra gruppo di record
- 25. Calcolare differenza tra i valori in righe consecutive dal gruppo
- 26. Differenza tra Dizionario e Hashtable
- 27. Differenza tra SCM e SVN
- 28. differenza tra RDLC e SSRS
- 29. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 30. Differenza tra "\ n" e Environment.NewLine
Oh grazie mille! La tua demo è perfetta. – Florian