Maison > Java > javaDidacticiel > Comment résoudre les problèmes de redimensionnement avec Canvas dans JScrollPane dans JSplitPane ?

Comment résoudre les problèmes de redimensionnement avec Canvas dans JScrollPane dans JSplitPane ?

Linda Hamilton
Libérer: 2024-12-29 16:44:13
original
436 Les gens l'ont consulté

How to Fix Resizing Issues with Canvas in JScrollPane within JSplitPane?

Résoudre le problème de redimensionnement avec Canvas dans JScrollPane dans JSplitPane

Dans votre application, vous avez rencontré un problème de redimensionnement lors de l'ajustement du JSplitPane qui contient un Canvas dans un JScrollPane. Lors de la réduction de la taille du composant supérieur, le séparateur semble s'étendre sous le Canvas et le JScrollPane, ce qui entraîne une apparence indésirable.

Solution :

Plutôt que de spécifier tailles préférées manuellement, il est recommandé de permettre aux composants de calculer dynamiquement leurs propres tailles préférées. En faisant cela, la fenêtre englobante peut être dimensionnée en conséquence à l'aide de la méthode pack().

Pour démontrer cette approche, l'exemple de code suivant peut être utilisé pour créer un SplitGraph, qui consiste en un GraphPanel placé en haut composant et un panneau de contrôle correspondant dans le composant inférieur :

import draw.GraphPanel;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.Image;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;

public class SplitGraph extends JPanel {

    public SplitGraph() {
        super(new GridLayout());
        JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        GraphPanel graphPanel = new GraphPanel();
        Image image = new URL("https://placekitten.com/240/180").getContent();
        graphPanel.setImage(image);
        split.setTopComponent(new JScrollPane(graphPanel));
        split.setBottomComponent(graphPanel.getControlPanel());
        this.add(split);
    }

    private void display() {
        JFrame f = new JFrame("SplitGraph");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> new SplitGraph().display());
    }
}
Copier après la connexion

Dans cet exemple, l'instance GraphPanel est ajoutée au composant supérieur et son panneau de contrôle associé est placé dans le composant inférieur. Le code ajuste avec succès la taille de la fenêtre englobante pour accueillir les composants sans aucun redimensionnement manuel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal