Comment faire jsplitpane code> à redimensionner
false code>? Je ne voulais pas redimensionner le
jsplitpane code>, je l'ai utilisé pour la bordure de ce volet. Y a-t-il un autre moyen de créer la même structure de bordure pour scinder un panneau verticalement en deux parties. P>
6 Réponses :
Vous pouvez remplacer les méthodes jsplitpane getdiviiderlocation () code> et
getlastdividerlocation code> et renvoyer une valeur constante.
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT){
private final int location = 100;
{
setDividerLocation( location );
}
@Override
public int getDividerLocation() {
return location ;
}
@Override
public int getLastDividerLocation() {
return location ;
}
};
@TaPas Bose, pas besoin d'étendre la classe de volet Split.
@camickr Mais c'est exactement ce que cette solution fait, il étend jspiltpane avec une classe anonyme.
splitPane.setEnabled( false );
Mais avec Nimbus, je ne vois aucune frontière si elle est désactivée. :(
Cette solution est simple et géniale
Cela désactive les sous-composants s'ils héritent de l'état des parents d'activation / désactivation. par exemple. Une jlist peut être désactivée de pouvoir être sélectionnée.
@MGamerz, une jlist fonctionne bien pour moi à l'aide de JDK8 sous Windows 7. La méthode SetEnabled () ne s'applique que sur le composant, pas des composants enfants. Par exemple, voir le tutoriel de balançoire sur Comment utiliser des vitres divisées pour un exemple avec une jlist.
@camickr Lorsque je désactive ce volet de division, certaines de mes sous-composants ne sont plus sélectionnables. Je ne peux pas choisir des objets dans une jlist et une sous-splitpane ne dispose pas du changement de curseur pour indiquer qu'il est mobile pendant qu'il est toujours. Supprimer le désactivé permet de travailler normalement à nouveau.
@MGamerz, vous avez un code personnalisé qui ne fonctionne pas correctement. Je vous ai donné un lien vers le code de démonstration du tutoriel de swing et j'ai déjà déclaré que cela fonctionne bien pour moi. Si le code de tutoriel ne fonctionne pas, alors m \ Peut-être que vous avez une version de version / système d'exploitation. Ce n'est pas le moyen d'activer est conçu pour fonctionner. Vous ne pouvez pas utiliser handicapé sur un JPANEL pour désactiver tous les composants du panneau. Si vous avez une question, créez un droit SSCCE et postez une vraie question sur le forum. Indiquant que quelque chose ne fonctionne pas sans que l'envoi de code ne signifie rien. C'est probablement votre code, pas swing.
final double pos = split.getDividers().get(0).getPosition(); split.getDividers().get(0).positionProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) { split.getDividers().get(0).setPosition(pos); } });
Pour empêcher les utilisateurs de redimensionner les vitres que vous pouvez également définir la taille du séparateur sur zéro.
splitPane.setDividerSize(0);
Comme indiqué sur les commentaires de la réponse de l'ONU @camickr, la désactivation de l'ensemble du volet de fraction peut désactiver le comportement interactif des composants contenus (par exemple, ils ne montreront pas leurs curseurs interactifs sur la survolte)
à la place, si vous utilisez Basicsplitpaneui, vous pouvez désactiver la Diviseur de l'UI P>
public class MySplitPane extends JSplitPane { public void setResizable(boolean resizable) { BasicSplitPaneUIui = (BasicSplitPaneUI) this.getUI(); ui.getDivider().setEnabled(resizable); } }
Désactiver le volet Split. Voir ci-dessous.