ホームページ > Java > &#&チュートリアル > NetBeans の JSplitPane の埋め込みキャンバスがサイズ変更時に消えるのはなぜですか?

NetBeans の JSplitPane の埋め込みキャンバスがサイズ変更時に消えるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-23 10:06:45
オリジナル
659 人が閲覧しました

Why Does My Embedded Canvas in NetBeans' JSplitPane Disappear When Resizing?

NetBeans GUI エディターでの埋め込みキャンバスのサイズ変更の問題

JScrollPane 内に Canvas を先頭に含む JSplitPane を使用してアプリケーションを構築する場合コンポーネントを使用すると、サイズ変更の問題が発生する可能性があります。仕切りを上に押すと、仕切りが Canvas の下に隠れてしまう傾向があります。

JScrollPane と Canvas の優先サイズ、最小サイズ、最大サイズをさまざまに調整しても、この問題の解決には効果がないことがわかっています。ここでは、NetBeans によって生成された関連コードを詳しく見ていきます。

jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
canvas1 = new java.awt.Canvas();
jTextField1 = new javax.swing.JTextField();

jSplitPane1.setDividerLocation(300);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

jScrollPane1.setViewportView(canvas1);

jSplitPane1.setTopComponent(jScrollPane1);

jTextField1.setText("jTextField1");
jSplitPane1.setRightComponent(jTextField1);
ログイン後にコピー

原因は、Canvas コンポーネントの setPreferredSize() の使用にあります。固定サイズを設定すると、Canvas の柔軟性がなくなり、周囲の JScrollPane のサイズ変更機能が制限されます。

この問題の解決策は、固定サイズを削除し、Canvas が動的に優先サイズを計算できるようにすることです。これは、動的なサイズ変更に対応するために、囲んでいるウィンドウで Pack() を使用することで実現できます。

サイズ変更の問題を解決する例を次に示します。

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;

/**
 * @see https://stackoverflow.com/q/11942961/230513
 */
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();
            }
        });
    }
}
ログイン後にコピー

この例では、推奨されるGraphPanel のサイズは動的に計算され、ディバイダが移動されると適切に調整されます。これにより、分割線が消える問題を発生させることなく、シームレスなサイズ変更エクスペリエンスが可能になります。

以上がNetBeans の JSplitPane の埋め込みキャンバスがサイズ変更時に消えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート