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()); } }
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!