JSplitPane 内の JScrollPane 内の Canvas でのサイズ変更の問題に対処する
アプリケーションで、以下を含む JSplitPane を調整するときにサイズ変更の問題が発生しました。 JScrollPane 内の Canvas。一番上のコンポーネントのサイズを小さくすると、ディバイダーが Canvas と JScrollPane の下に広がっているように見え、望ましくない外観になります。
解決策:
指定するのではなく優先サイズを手動で使用する場合は、コンポーネントが独自の優先サイズを動的に計算できるようにすることをお勧めします。これを行うことで、pack() メソッドを使用して、囲んでいるウィンドウのサイズをそれに応じて変更できます。
このアプローチを示すために、次のコード サンプルを使用して、上部に配置された GraphPanel で構成される SplitGraph を作成できます。コンポーネントと、下部コンポーネントの対応するコントロール パネル:
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 中国語 Web サイトの他の関連記事を参照してください。