解決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中文網其他相關文章!