私が書いているアプリケーションの一部として、古い(重い)Canvasをswingコンポーネントと混合する必要があります。具体的には、それらをJSplitPane内にネストします。ただし、これを行うと、どちらのキャンバスもサイズの縮小を受け入れないかのように、仕切りはどこでもサイズ変更を拒否します。したがって、問題を示すコードは次のとおりです。
JFrame frame = new JFrame();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Canvas(), new Canvas());
pane.setResizeWeight(0.5);
frame.add(pane);
frame.pack();
frame.setVisible(true);
私は当初、これは簡単に解決できると思っていましたが、かなりの調査を行った後、オプションは次のように表示されます。
- 代わりにJPanelを使用してください(vlcjを使用してキャンバスに直接レンダリングする場合のように常にオプションとは限りません)
- 場合によっては機能する可能性のあるx危険なハックを挿入します
これを行うためのより良い方法はありますか?それとも、それは本当にハッキングに頼る場合ですか?代替のSplitPane実装が機能するかどうかなど、他のオプションについても議論しましたが、重量のある実装はなく、軽量の実装で問題が回避された場合は驚きます。