2

[OK] ボタンと [キャンセル] ボタンをボックス (BoxLayout を持つ) に横方向に配置しています。後で、このボックスを JDialog のコンテンツ ペインの BorderLayout.PAGE_END に追加します。これは Windows で完璧に機能するので、[OK] は [Cancel] の左側にあります - 私が追加したように。

Linux でテストすると、ボタンの配置は Windows と同じで、[キャンセル] の左側に [OK] が表示されます。これもまた、コードに従います。

ただし、Linux (Ubuntu) では、ボタンのデフォルトの配置は [OK] の左側の [キャンセル] です。これは、私のコードとボタンの配置とは対照的です。

それで、私の質問は次のとおりです。Javaにある種の定数があるかどうか-OS_PLACEMENTなど、Linuxで[キャンセル]ボタンを[OK]の左側に表示する場所に設定できますか? JavaがRTLおよびLTRレイアウトの定数をサポートしていることを知っているので、私はこれを求めています。したがって、この種の配置に関連する定数があるのではないかと考えました。

Swing アプリの L&F を System L&F に設定していることに言及したいと思います。以下は main() の最初の行です

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

4

3 に答える 3

2

Linux (Ubuntu) と言うと、Gnome のことですよね? Gnome (Gtk) のデフォルト (OS) でのボタン配置は、キャンセル ボタンを左側に配置しています。

Swing のルック アンド フィールの変更を試みることができます : ルック アンド フィールの設定方法

于 2012-01-08T11:35:45.233 に答える
1

いいえ、Javaはこれを自動的に行いません。

無料の「 JGoodiesForm」ライブラリの使用を検討してください。ユーザーのOSに応じてボタンを正しい順序で配置する「ButtonBarBuilder」というクラスがあります。

それ以外の場合は、System.getProperty( "os.name")の値を手動で検査し、値に従ってボタンを配置する必要があります。

于 2012-01-09T11:48:13.730 に答える
0

たとえば、DesignGridLayoutと MigLayout は、アプリケーションが実行されている OS を検出し、それに基づいて、[OK] と [キャンセル] (およびその他の特定のボタン) の適切な位置を選択します。

たとえば、DesignGridLayout では次のようにします。

DesignGridLayout layout = new DesignGridLayout(myDialog);
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL);
于 2012-01-10T14:47:33.610 に答える