1

Java Swing でラベルの書式を設定しようとしています。ユーザーが入力した場合:

    This
    is
    testing.

そして、これをデータベースに保存して取り出します。これを 1 つの文に自動結合しないようにするにはどうすればよいですか。たとえば、スクロール可能なラベルにこれを表示したい:

    This
    is
    testing.

Thisistestingの代わりに。これが何と呼ばれているのかわかりません。これはラインラップ方式ですか?これを追加しました: jLabel_reply.setLineWrap(true); 私のコードに入っていますが、運はありません。文はまだ自動結合されています。ガイドはありますか?前もって感謝します。

4

2 に答える 2

1

JLabelデフォルトでは、複数行に表示されません。

ここには2つのオプションがあります。

1)編集不可、不透明でないものを使用するJTextArea

2)内部でHTMLを使用JLabelし、すべての行区切り文字を次のように置き換えます<br>

私のことわざを説明する基本的な例:

import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TestMultipleLineLabel {

    private static final String TEXT = "This is\na text\non multiple lines";

    protected void initUI() {
        JFrame frame = new JFrame(TestMultipleLineLabel.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        JLabel label = new JLabel();
        label.setText(getHTMLText(TEXT));
        label.setFont(label.getFont().deriveFont(Font.PLAIN));
        panel.add(label, gbc);
        JTextArea textArea = new JTextArea();
        textArea.setEditable(false);
        textArea.setLineWrap(false);
        textArea.setOpaque(false);
        textArea.setWrapStyleWord(false);
        textArea.setText(TEXT);
        panel.add(textArea, gbc);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    private String getHTMLText(String text) {
        return "<html>" + text.replace("\n", "<br>") + "</html>";
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TestMultipleLineLabel().initUI();
            }
        });
    }

}
于 2013-01-24T09:07:07.583 に答える
0

データベース エンジンは、おそらく行区切りを削除します。\n などの特殊文字をサポートするフィールド タイプを使用する必要があります。

于 2013-01-24T08:58:37.343 に答える