Comment faire un JFrame défilant en Java?
J'ai ce code dans lequel je suis en train de monter un Panneau à défilement (Composite) mais je ne l'obtenez pas. Voici mon code:
public class Sniffer_GUI extends JFrame {
Canvas c = new Canvas();
ConnectorPropertiesPanel props;
public Sniffer_GUI() {
super("JConnector demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new GridBagLayout());
init();
getContentPane().add(new JLabel("Connectors example. You can drag the connected component to see how the line will be changed"),
new GridBagConstraints(0, 0, 2, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
getContentPane().add(initConnectors(),
new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
getContentPane().add(props,
new GridBagConstraints(1, 1, 1, 1, 0, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.VERTICAL, new Insets(5, 0, 5, 5), 0, 0));
setSize(800, 600);
setLocationRelativeTo(null);
}
Merci d'avance.
Je modifier pour ajouter un code que partiellement semble fonctionner...
public Sniffer_GUI() {
super("JConnector demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel container = new JPanel();
JScrollPane scrPane = new JScrollPane(container);
add(scrPane);
scrPane.setLayout(new ScrollPaneLayout());
init();
add(initConnectors());
setSize(800, 600);
setLocationRelativeTo(null);
}
Mais il n'est pas encore défiler, au moins il fait de sa fonction à l'intérieur d'un JScrollPane, est une bonne étape.
Où est ton code qui essaie d'utiliser JScrollPane?
peut-être qu'il ne savait pas sur le JScrollPane.
Je sais pas non plus de déclarer JScrollPane variable... =(
Je ne voit même pas ce JScrollPane variable dans votre code. Je vous suggère de lire le Swing tutoriel: docs.oracle.com/javase/tutorial/ui/index.html docs.oracle.com/javase/tutorial/ui/features/components.html
J'ai ajouté le fichier de code avec JScrollPane, mais elle n'est pas encore déplacé....
peut-être qu'il ne savait pas sur le JScrollPane.
Je sais pas non plus de déclarer JScrollPane variable... =(
Je ne voit même pas ce JScrollPane variable dans votre code. Je vous suggère de lire le Swing tutoriel: docs.oracle.com/javase/tutorial/ui/index.html docs.oracle.com/javase/tutorial/ui/features/components.html
J'ai ajouté le fichier de code avec JScrollPane, mais elle n'est pas encore déplacé....
OriginalL'auteur Joe Lewis | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Faire un Composite de défilement et de l'utiliser comme un conteneur, quelque chose comme ceci:
Au lieu de faire ce que vous faites avec le volet de contenu, de le faire sur le conteneur décrit dans Fr.Fouad réponse et il suffit d'ajouter le composant scrollpane pour le volet de contenu (laissez la configuration par défaut, BorderLayout, comme le gestionnaire de présentation de la fenêtre de contenu)
Polet ok parfait Eng.Fouad code est partiellement travail que j'ai édité dans le post original, il fonctionne, mais il n'est pas encore défilement...
J'ai posté et répondre en fonction de votre code et de la Fra.Fouad proposition.
OriginalL'auteur Eng.Fouad
D'étendre @Eng.Fouad réponse:
Vous pouvez régler le défilement verticale et horizontale de la barre des politiques pour régler ce genre de choses. Pensez à lire ce ScrollPane tutoriel et son JavaDoc
Mon problème, c'est que iniConnectors() permet de retrouver un Composite et j'ai besoin de faire de défilement du groupe, puisque c'est le plus important, cependant, je ne peux pas le faire, ajoutant même initConnector à l'autre JScrollPane et puis faire conteneur.add("the new JScrollPane", etc...);
Je doute que vous avez besoin imbriquée ScrollPane ici, mais je sais pas pour vous, sans voir tout votre code. Si vous voulez seulement de défilement pour l'appliquer à votre Composite initConnector, puis continuez votre code d'origine, mais utiliser les éléments suivants:
getContentPane().add(new JScrollPane(initConnectors()),...
au lieu degetContentPane().add(initConnectors(),...
OriginalL'auteur Guillaume Polet
Peut-être que cela vous aidera...
OriginalL'auteur Filipe de Lima Brito
De faire une composante d'une JFrame défilement, placer le composant dans un JScrollPane:
et remplacer les mentions de myJLabel avec myJScrollPane. A travaillé pour moi.
OriginalL'auteur gherson
Juste carillon, et n'hésitez pas à me corriger si je suis hors de la base, mais à l'aide d'un JScrollPane comme ça a une conséquence imprévue d'exiger de plus en plus fréquentes redimensionnement de la fenêtre.
Par exemple, j'avais un programme où j'ai mis en place un JFrame à l'échelle de scrollpane comme ça. J'ai également eu un JTextArea dans un onglet, dans le cadre de la même taille que la fenêtre de contenu. Ce textArea était aussi dans son propre composant scrollpane (c'était plus d'un vissage autour du projet qu'autre chose). Lorsque j'ai chargé le contenu d'un fichier à déposer dans le textArea, il a déclenché les barres de défilement autour de la zone de texte.
Le résultat est que mes, nous allons l'appeler le innerScrollPane, est maintenant plus grande que la JFrame à cause des barres de défilement, ce qui n'avait pas été visible avant. Ensuite, cela a déclenché ce que je vais maintenant appeler les outerScrollPane, pour afficher ses barres de défilement, puis recouvert à l'intérieur des barres de défilement.
Cela a été facilement résolu par l'ajout d'une fenêtre supplémentaire.pack() argument à la fin de mon fichier en mode d'ouverture, mais je voulais juste jeter cette. Les barres de défilement peuvent potentiellement couvrir le contenu de la fenêtre si vous ne faites pas attention. Mais... eh bien, il ya des millions de façons d'éviter ce problème, il n'est donc pas une affaire énorme. Juste quelque chose d'être conscient de.
OriginalL'auteur user2223059
Essayez ceci:
Quelque chose comme cela devrait fonctionner pour vous. Jetez un oeil à cette ainsi:
setViewportView
OriginalL'auteur Logard