にスクロール機能を追加したいと思いjavax.swing.JDesktopPane
ます。ただし、 a でラップしてjavax.swing.JScrollPane
も、望ましい動作は得られません。
Web を検索すると、これはかなり長い間問題になっていることがわかります。そこにはいくつかの 解決策がありますが、それらはかなり古いようで、完全に満足しているわけではありません。
アクティブに維持されているソリューションは何ですか?
独自のソリューションを作成して、JavaWorld のソリューションを使用しましたJScrollableDesktopPane.
Javaworld'sJScrollableDesktopPane
は Web サイトで利用できなくなりました。私はそれのいくつかのコピーを集めることができましたが、どれも機能しません。
私が導き出した簡単な解決策は、次のような方法で実現できます。これは最も美しいというわけではありませんが、デフォルトの動作よりも確実にうまく機能します。
public class Window extends Frame {
JScrollPane scrollContainer = new JScrollPane();
JDesktopPane mainWorkingPane = new JDesktopPane();
public Window() {
scrollContainer.setViewportView(mainWorkingPane);
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent evt) {
revalidateDesktopPane();
}
});
}
private void revalidateDesktopPane() {
Dimension dim = new Dimension(0,0);
Component[] com = mainWorkingPane.getComponents();
for (int i=0 ; i<com.length ; i++) {
int w = (int) dim.getWidth()+com[i].getWidth();
int h = (int) dim.getHeight()+com[i].getHeight();
dim.setSize(new Dimension(w,h));
}
mainWorkingPane.setPreferredSize(dim);
mainWorkingPane.revalidate();
revalidate();
repaint();
}
}
でラップJDesktopPane
しJScrollPane
、メイン フレームにサイズ変更リスナーを追加してから、サイズ変更の内容を評価するJDesktopPane
(または新しい要素を追加する) というアイデアです。
これが誰かを助けることを願っています。
私はこれを見つけました: http://www.javaworld.com/javaworld/jw-11-2001/jw-1130-jscroll.html?page=1
これは、Swing などに関する多くの説明と情報を含む素晴らしいチュートリアルであり、多くのものを含む JscrollableDesktopPane を作成できます。
要件を満たすには、コードの一部を少し変更する必要があります。
楽しみ !