ホームページ >Java >&#&チュートリアル >JSplitPane 内の JScrollPane のキャンバスのサイズ変更の問題を修正する方法
JScrollPane および JSplitPane 内の Canvas でのサイズ変更の問題の解決
NetBeans を使用したグラフィカル ユーザー インターフェイスの作成では、レイアウトが発生することがよくありますペイン内のサイズ変更可能なコンポーネントに関する課題。この質問は、JSplitPane 内に含まれる JScrollPane 内の Canvas のサイズ変更に関する特定の問題を強調しています。
問題:
最上位コンポーネントのサイズを縮小するとき ( Canvas を含む) JSplitPane 内で、分割線が Canvas の下、場合によっては JScrollPane の下に消えて表示され、不整合が発生します。 layout.
解決策:
コンポーネントの優先サイズを手動で設定する代わりに、コンポーネントの優先サイズを動的に計算できるようにすることをお勧めします。これは、囲んでいるウィンドウで Pack() メソッドを使用することで実現できます。
コード例:
提供されたコードには、次の GridLayout と GraphPanel を使用してこのアプローチが組み込まれています。引き分けlibrary.
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 中国語 Web サイトの他の関連記事を参照してください。