4

window1 のようなウィンドウがあり、window2 のようにしたい:

ここに画像の説明を入力

これは私のコードです:

    String q = "Have you used GUI before?";     
    JLabel textLabel2 = new JLabel(
        "<html><div style=\"text-align: center;\">" + q + "</html>", SwingConstants.CENTER);
    add(textLabel2, BorderLayout.NORTH);

    JPanel radioPanel = new JPanel();                                           
    add(radioPanel, BorderLayout.CENTER);

    JPanel btnPanel = new JPanel();
    add(btnPanel, BorderLayout.SOUTH);

ラジオボタンについては、GridLayout を使用しようとしましたが、「はい」と「いいえ」の位置が壊れました。また、「戻る」ボタンと「次へ」ボタンでは、水平方向の配置がうまくいかなかったようです ( btnPanel.setAlignmentX(RIGHT_ALIGNMENT);)。どんな解決策も高く評価されます。私はこのビットが長すぎます。ありがとう

--EDIT--
それは完全に正常に動作しています:

btnPanel.setLayout(new BoxLayout(btnPanel, BoxLayout.LINE_AXIS));
btnPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
btnPanel.add(Box.createHorizontalGlue());

ボタンの問題は解決しました。
ただし、まだラジオボタンを修正できません。

--EDIT 2--
を使用してラジオボタンの背景を修正しましたsetOpaque(false);

4

2 に答える 2

4

GridLayout は正常に機能するはずなので、「はい」と「いいえ」の位置を「壊した」とはどういう意味ですか。を介して、1列と2(または可変数の場合は0)行を指定しnew GridLayout(0, 1)ます。を実行して、その opaque プロパティが false に設定されていることを確認してくださいradioPanel.setOpaque(false);。このようにして、それが置かれているコンテナの背景色が表示されます。 JRadioButtons も不透明にする必要があるかもしれませんが、よくわかりません。

btnPanel は BoxLayout を使用し、Box.createGlue() を使用してボタンを右側にプッシュできます。

最も重要なことは、Swing レイアウト マネージャーの使用に関するチュートリアルをまだ読んでいない場合は、こちら から入手できることです

于 2011-07-26T00:49:03.747 に答える
4

これについてできることがいくつかあります。LayoutManager を変更する必要があります。これは、BorderLayout にとって大きな作業ではありません。ネストされた BoxLayout を実行できます。垂直固定高ストラット、ラベル、垂直固定高ストラット、ラジオあり、垂直固定ストラット、ラジオなし、垂直接着剤、および最終ボタン パネルを含む垂直ボックス。次に、ボタン パネルで編集を使用して、それらを水平方向に整列させます。それは 1 つのオプションですが、パネルのネスティングは煩わしいものです。

もう 1 つのオプションは、TableLayout を取得して、その使用方法を学習することです。TableLayout は、最高の LayoutManager の 1 つです。使いやすく、しっかりとテストされており、Swing が再び楽しくなります。二度と GridBagLayout を使用することはありません。

http://java.sun.com/products/jfc/tsc/articles/tablelayout/

最後のオプションは、新しい GroupLayout を使用することです。あまり詳しくありませんが、とても簡単に見えます。また、Box のようにコードや不要なパネルをネストする必要もありません。

于 2011-07-26T01:19:35.513 に答える