1

私が求めているのはコード行だけなので、これは簡単に説明します。ここに私の問題があるので、Jlabel が表示されるようにするには、.setBounds を使用します。

私の問題は、テキストの幅を推測できないため、setBounds がテキストの幅と高さを取得するにはどうすればよいかということです。

私がこれを十分に説明していない場合は、もっと説明してみてください。

Some1 は例が欲しかったので、ここに行きます:

私のコードスニペット:

JLabel poisonDescription = new JLabel("This is the poison icon, when this appears...");
//My declaration.. the next is inside a void.
poisonDescription.setBounds(50, 50, 400, 20);
        add(poisonDescription);

とてもシンプルです。Bounds をフォントのサイズに合わせてサイズ変更したいのです!

そうそう、別の質問... JLabel の複数行を作成するにはどうすればよいですか?

4

4 に答える 4

1

setBounds を使用しないでください。単に JLabel ハンドル自体を preferredSize のままにしてください。ラベル コンテナーにどのようなレイアウトを選択しても、ラベルは適切に処理されます。

複数行のラベルを付けるには、単純に JTextArea を使用します。

JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setOpaque(false);
textArea.setWrapStyleWord(false);
于 2012-05-02T17:24:48.163 に答える
1

HTMLを使用して実行できます。

import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        JLabel label = new JLabel("<html>One<br>Two!");
        JOptionPane.showMessageDialog(null, label);
    }
}

詳細については、Java チュートリアルの「 Swing コンポーネントでHTML を使用する方法」を参照してください。

于 2012-05-02T17:24:53.330 に答える
1

あなたの主な質問に対する答えは、これが LayoutManagers が修正するように設計された問題であるということです。この問題を解決したい場合は、null レイアウトの使用をやめ、FlowLayout や BorderLayout などの単純なレイアウト マネージャーの使用を開始し、レイアウト マネージャーでラベルのサイズを調整します。

複数行のラベルに関する質問 2 については、<HTML> タグを含む適切な形式の HTML を渡すのが最も簡単な方法です。

于 2012-05-02T17:25:40.413 に答える
1
    l1 = new JLabel("UserName");
    l2 = new JLabel("Password");

    t1 = new JTextField();
    t2 = new JTextField();

    b1 = new JButton("Log In");
    b2 = new JButton("Cancel");

    l1.setBounds(100,100,40,30);
    l2.setBounds(100,150,70,30);
    t1.setBounds(200,100,150,30);
    t2.setBounds(200,150,150,30);
    b1.setBounds(100,200,90,30);
    b2.setBounds(200,200,90,40);

ボタンのテキストフィールドなどの寸法を指定するだけです...

于 2014-03-26T17:50:42.393 に答える