12
votes

Quelle est la meilleure façon de mettre des espaces entre les objets? Un objet JSEnerator peut-il être un séparateur invisible?

J'essaie de mettre deux boutons à l'intérieur d'un panneau à l'aide de widgets de swing. À l'intérieur de NetBeans IDE, mon JSEparator La propriété est défini sur (pas de bordure) dans le volet Propriétés.

Néanmoins une ligne apparaît. Ce n'est pas ce que j'attendrais d'un objet séparateur. Est-ce que je fais quelque chose de mal? Venant d'un antécédent à Delphi, et C # Winforms, je m'attends à trouver des bizarreries en swing. Mais comment effectuez-vous exactement un écart transparent d'une taille particulière, entre deux boutons d'un panneau? Dois-je jouer avec des mises en page et éviter le jsparator ?

Mise à jour: Il devrait être trivial pour le faire avec une mise en page et sans aucun objet séparateur. Alors, comment faites-vous cela? Je regarde dans l'inspecteur de Customizer et de propriétés de la mise en page NetBeans et je ne trouvant aucun moyen de le faire. (Réponse: mises en page à l'encontre, au lieu de séparateurs.)


3 commentaires

Est "(pas de frontière)" NULL ou un objet représentant une frontière vide? null est la bordure par défaut de l'UI


Au fait, si vous vouliez vraiment faire cela, vous auriez besoin de remplacer le code JSEnerator et de ressentir le code pour ne rien peindre. Les lignes ne sont pas la frontière.


JSEparator a été inventé pour créer des séparateurs visibles. Vous ne voulez pas de séparateur - vous voulez un SEPARA tion , réalisable par l'une des nombreuses méthodes ci-dessous.


4 Réponses :


4
votes

jséparator est censé être un séparateur visible entre les composants.

du Javadoc pour JSEparator < / code> :

JSEparator fournit une composante à usage général pour la mise en œuvre de lignes de division - le plus couramment utilisé comme diviseur entre les éléments de menu qui les enfreint en groupements logiques.

Si vous souhaitez mettre un composant entre deux composants invisibles, utilisez simplement un jPanel à la place. Ensuite, réglez la taille du panneau avec SetPreferedSize () et SETMIN / MAXSIZE () .


3 commentaires

Dans la plupart des environnements autres que Java, la possibilité de faire disparaître cette ligne aurait été envisagée. Parce que ce n'était pas considéré par ces gars.


Au contraire, vide Boîte Éléments et INSSTÈRES sont créés pour ce but. Il a été pris en compte, tout simplement pas en utilisant jsparator


Ah oui. Les encadrements sont parfaits pour mes utilisations, et la boîte et CreateHorizontalsTrut suffiraient probablement toute autre application. Maintenant je suis éclairé. Merci.



2
votes

Vous n'avez pas besoin de jsparator. La plupart des mises en page vous permettent de définir l'écart (espace) entre les composants. Et la classe de boîtes peut être particulièrement utile.


4 commentaires

Comment puis-je avoir une mise en page de boîte avec deux boutons dedans avec au moins 10 pixels entre chaque bouton? Je ne peux pas sembler avoir ça.


BOX.CREATHORIZONTABUT (10) Entre les boutons, dans un FlowLayout .


Frais. L'autre gars a mentionné que, en code, mais j'essayais de le faire de l'IDE (Netbeans). S'avère que vous pouvez le faire visuellement dans le gestionnaire de mise en page en ajustant "Incarts".


Je serai toujours connu sous le nom de "l'autre gars" :-(



25
votes

Vous devez consulter les méthodes utilitaires statiques sur le boîte classe. Ils peuvent être utilisés pour fabriquer des jambes de force fixes qui agissent comme des séparateurs invisibles; E.g. xxx

Ceci produit plus de code compact que de créer / configurer un jPanel avec des dimensions minimales, maximales et préférées appropriées.


5 commentaires

Je pense que ce code, et le JPanel pourrait être plus de douleur à long terme, en tant que pratique standard, que l'utilisation appropriée des mises en page.


@Warren P: Selon le gestionnaire de présentation que vous utilisez, ce code pourrait être une utilisation appropriée des mises en page. Différents responsables de la mise en page ont des moyens très différents de la réalisation du même résultat.


"Utilisation appropriée des présentations" dans mon cas, signifie "Utiliser le gestionnaire de mise en page Netbeans au lieu de générer mon propre code, tandis que j'apprends toujours Netbeans, balancer et brosser mes connaissances linguistiques de Java stables". ;-)


Rien de dire que l'utilisation d'une jambe horizontale n'est pas une utilisation appropriée des mises en page; J'ai généralement utilisé cette approche des boutons d'espace sur une barre JTOOL. Par exemple, dans une application de traitement de texte, il peut être courant d'ajouter une petite jambe de force à séparer les catégories de bouton.


C'est la meilleure réponse si vous me demandez



1
votes

Utilisation de Addsparator avec une valeur de 1 pour la hauteur le rend invisible pour moi, par exemple:

MyJToolBar.addSeparator(new Dimension(20, 1));


0 commentaires