JavaSwingアプリケーションを拡大する方法を探しています。つまり、UIのスクリーンショットを撮り、「画像スケール」操作を適用したかのように、特定のJPanel内のすべてのコンポーネントのサイズを特定の係数で変更したいということです。フォントサイズだけでなく、チェックボックス、テキストボックス、カーソルなどのサイズも調整する必要があります。グラフィックスオブジェクトに変換を適用することにより、コンポーネントをスケーリングすることができます。
protected Graphics getComponentGraphics(Graphics g) {
Graphics2D g2d=(Graphics2D)g;
g2d.scale(2, 2);
return super.getComponentGraphics(g2d);
}
これは、コンポーネントの自己更新を気にしない限り機能します。アプリケーションにテキストボックスがある場合、テキストボックスは毎秒更新されて(点滅する)カーソルが表示されるため、このアプローチは機能しなくなります。また、今回は変更されたグラフィックスオブジェクトを使用しないため、コンポーネントは古い場所に表示されます。コンポーネントのグラフィックオブジェクトを永続的に変更する可能性はありますか?マウスクリックイベントハンドラーにも問題があります。もう1つの可能性は、JPanelのすべての子コンポーネント(setPreferredSize)のサイズを新しいサイズに変更することです。チェックボックスの表示された画像はそのサイズを変更しないため、これはチェックボックスでは機能しません。自分のレイアウトマネージャーをプログラミングすることも考えましたが、レイアウトマネージャーはオブジェクトの位置(およびサイズ)を変更するだけで、チェックボックスを拡大することはできないため、これは機能すると思います(前の段落を参照)。それとも私はこの仮説に誤りがありますか?カスタムコンポーネントをプログラミングせずにズーム可能なSwingGUIを実現する方法について何かアイデアはありますか?問題はよく知られているように見えるので、回転可能なユーザーインターフェイスを探しましたが、この問題に対する満足のいく解決策も見つかりませんでした。
助けてくれてありがとう、クリス