首頁 > Java > java教程 > 如何解決 JSplitPane 中 JScrollPane 中 Canvas 的大小調整問題?

如何解決 JSplitPane 中 JScrollPane 中 Canvas 的大小調整問題?

Linda Hamilton
發布: 2024-12-29 16:44:13
原創
451 人瀏覽過

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

在JSplitPane 中解決JScrollPane 中Canvas 的調整大小問題

在您的應用程式中,您在調整包含以下內容的JSplitPane時遇到了調整大小問題JScrollPane 中的Canvas。在縮小頂部組件的大小後,分隔線似乎延伸到 Canvas 和 JScrollPane 下方,從而導致外觀不良。

解決方案:

而不是指定手動首選尺寸,建議允許組件動態計算自己的首選尺寸。透過這樣做,可以使用 pack() 方法相應地調整封閉視窗的大小。

為了示範這種方法,可以使用以下程式碼範例建立一個SplitGraph,它由放置在頂部的GraphPanel 組成組件和底部組件中相應的控制面板:

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());
    }
}
登入後複製

在此在範例中,GraphPanel 實例被加入到頂部組件,其關聯的控制面板被放置在底部成分。該程式碼成功調整了封閉視窗的大小以容納組件,而無需任何手動調整大小。

以上是如何解決 JSplitPane 中 JScrollPane 中 Canvas 的大小調整問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板