Behebung des Größenänderungsproblems mit Canvas in JScrollPane in JSplitPane
In Ihrer Anwendung ist beim Anpassen des enthaltenen JSplitPane ein Größenänderungsproblem aufgetreten ein Canvas innerhalb eines JScrollPane. Beim Reduzieren der Größe der oberen Komponente scheint sich die Trennlinie unter die Leinwand und das JScrollPane zu erstrecken, was zu einem unerwünschten Erscheinungsbild führt.
Lösung:
Anstatt zu spezifizieren Wenn Sie bevorzugte Größen manuell festlegen möchten, empfiehlt es sich, den Komponenten die Möglichkeit zu geben, ihre eigenen bevorzugten Größen dynamisch zu berechnen. Auf diese Weise kann die Größe des umschließenden Fensters mithilfe der Methode pack() entsprechend angepasst werden.
Um diesen Ansatz zu demonstrieren, kann das folgende Codebeispiel verwendet werden, um einen SplitGraph zu erstellen, der aus einem oben platzierten GraphPanel besteht Komponente und ein entsprechendes Bedienfeld in der unteren Komponente:
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()); } }
In diesem Beispiel wird die GraphPanel-Instanz zur oberen Komponente hinzugefügt und das zugehörige Bedienfeld wird in der unteren Komponente platziert. Der Code passt die Größe des umschließenden Fensters erfolgreich an die Komponenten an, ohne dass eine manuelle Größenänderung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie behebe ich Probleme bei der Größenänderung von Canvas in JScrollPane innerhalb von JSplitPane?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!