首頁 > Java > java教程 > 如何修復 JSplitPane 中 JScrollPane 中畫布的大小調整問題?

如何修復 JSplitPane 中 JScrollPane 中畫布的大小調整問題?

Barbara Streisand
發布: 2024-12-13 15:04:10
原創
168 人瀏覽過

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

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

在使用NetBeans 建立圖形使用者介面問題時,經常會遇到涉及涉及窗格內可調整大小的組件的挑戰。此問題突顯了在 JScrollPane 中調整 Canvas 大小的特定問題,該畫布包含在 JSplitPane 中。

問題:

減小頂部組件的大小時 (包含 Canvas)在 JSplitPane 中,分隔線似乎消失在 Canvas 和可能的 JScrollPane下方,導致不一致

解決方案:

不要手動設定組件的首選尺寸,建議讓它們動態計算其首選尺寸。這可以透過在封閉視窗上使用 pack() 方法來實現。

程式碼範例:

提供的程式碼透過使用 GridLayout 和 GraphPanel 來合併此方法平局庫。

import draw.GraphPanel;
import java.awt.EventQueue;
import java.awt.GridLayout;
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();
        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 Runnable() {

            @Override
            public void run() {
                new SplitGraph().display();
            }
        });
    }
}
登入後複製

說明:

使用 pack() 會自動調整視窗的大小以適應其組件的首選大小。這種動態運算可確保元件正確調整大小,而不會導致分隔線消失。

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

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