2012-01-08 21 views
2

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

私がLinuxでテストするとき、ボタンの配置はWindowsと同じです - [キャンセル]の左にある[OK]。これはコードからもわかります。

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

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

私は、私は次のシステムLに& F.を自分のスイングのアプリのL & Fを設定しないことに言及することは(メインの私の最初の行にある希望)

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

答えて

2

あなたはLinux(Ubuntu)と言ってGnomeを意味するのでしょうか? Gnome(Gtk)のデフォルトのボタン配置(OS)は、左にCancelボタンを配置しています。あなたはスイングのルック・アンド・フィールを変更しようとすることができます

How to Set the Look and Feel

+0

はい、私はUbuntuのLinuxとGNOMEを意味します。あなたは正しいです。 私は既にSwingアプリでL&Fを変更しました。以下は私のメインラインの最初の行です。 UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName()); 動作はまだあります。手伝ってくれますか? – txx28

1

いいえ、Javaはあなたのためにこれを自動的に行うことはありません。

無料の「JGoodies Form」ライブラリの使用を検討してください。それは、ユーザーのOSに応じて正しい順序でボタンをレイアウトする "ButtonBarBuilder"というクラスを持っています。

それ以外の場合は、System.getProperty( "os.name")の値を手動で検査し、値に応じてボタンをレイアウトする必要があります。

+0

ありがとうございます。私はSystem.getProperty( "os.name")を使い、JDialogのデザインが完成するとOSごとにボタンをレイアウトします。それにもかかわらず、私はJGoodiesを見ていきます。 – txx28

0

一部のLayoutManagerが自動的にこれを行います。例えば、DesignGridLayoutなどです。MigLayoutは、アプリケーションが実行されているOSを検出し、それに基づいて、OKとキャンセル(および他の特定のボタン)の正しい位置を選択します。あなたがどうなるDesignGridLayoutと例えば

、:

DesignGridLayout layout = new DesignGridLayout(myDialog); 
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL); 
関連する問題