Mengatasi Isu Saiz Semula dengan Kanvas dalam JScrollPane dalam JSplitPane
Dalam aplikasi anda, anda menghadapi masalah mengubah saiz apabila melaraskan JSplitPane yang mengandungi Kanvas dalam JScrollPane. Setelah mengecilkan saiz komponen atas, pembahagi kelihatan memanjang di bawah Kanvas dan JScrollPane, menghasilkan penampilan yang tidak diingini.
Penyelesaian:
Daripada menyatakan saiz pilihan secara manual, adalah disyorkan untuk membenarkan komponen mengira saiz pilihan mereka sendiri secara dinamik. Dengan melakukan ini, tetingkap yang disertakan boleh bersaiz sewajarnya menggunakan kaedah pack().
Untuk menunjukkan pendekatan ini, sampel kod berikut boleh digunakan untuk mencipta SplitGraph, yang terdiri daripada GraphPanel yang diletakkan di bahagian atas komponen dan panel kawalan yang sepadan dalam komponen bawah:
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()); } }
Dalam contoh ini, tika GraphPanel ditambahkan pada komponen atas dan kawalan yang berkaitan dengannya panel diletakkan di bahagian bawah komponen. Kod ini berjaya melaraskan saiz tetingkap tertutup untuk menampung komponen tanpa sebarang saiz semula manual.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Saiz Semula dengan Kanvas dalam JScrollPane dalam JSplitPane?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!