2

私の Java GUI アプリケーションは、エンド ユーザーにテキストをすばやく表示する必要があるため、JOptionPaneユーティリティ メソッドが適しているように思えます。さらに、テキストは選択可能 (コピー アンド ペースト用) である必要があり、多少長い (100 語程度) 可能性があるため、ウィンドウにうまく収まる必要があります (テキストが画面外に出ないようにする必要があります)。理想的には、すべてを一度に表示して、ユーザーが対話する必要なく読むことができるようにする必要があるため、スクロールバーは望ましくありません。

テキストを に入れ、JTextAreaそれをメッセージに使用するのはJOptionPane.showMessageDialog簡単だと思いましたが、テキストが切り捨てられているようです!

public static void main(String[] args) {
  JTextArea textArea = new JTextArea();
  textArea.setText(getText()); // A string of ~100 words "Lorem ipsum...\nFin."
  textArea.setColumns(50);
  textArea.setOpaque(false);
  textArea.setEditable(false);
  textArea.setLineWrap(true);
  textArea.setWrapStyleWord(true);
  JOptionPane.showMessageDialog(null, textArea, "Truncated!", JOptionPane.WARNING_MESSAGE);
}

テキストが切り捨てられたダイアログ

スクロールバーなしでテキストをオプション ペインに完全に収め、コピー/貼り付けを選択できるようにするにはどうすればよいですか?

4

4 に答える 4

6
import java.awt.*;
import javax.swing.*;

public class TextAreaPreferredHeight2
{
 public static void main(String[] args)
 {
  String text = "one two three four five six seven eight nine ten ";
  JTextArea textArea = new JTextArea(text);
  textArea.setColumns(30);
  textArea.setLineWrap( true );
  textArea.setWrapStyleWord( true );
  textArea.append(text);
  textArea.append(text);
  textArea.append(text);
  textArea.append(text);
  textArea.append(text);
  textArea.setSize(textArea.getPreferredSize().width, 1);
  JOptionPane.showMessageDialog(
   null, textArea, "Not Truncated!", JOptionPane.WARNING_MESSAGE);
 }
}
于 2010-12-02T02:31:03.390 に答える
2

あなたは正しい考えを持っています。テキストエリアの行を調整するだけです。

textArea.setRows(10); // or value that seems acceptable to you...

これにより、100ワードのloremipsumを使用して問題が解決したようです。

于 2010-12-02T01:03:42.950 に答える
-2

これを試して:

JTextArea textArea = new JTextArea();
textArea.setText(getText());
textArea.setSize(limit, Short.MAX_VALUE); // limit = width in pixels, e.g. 500
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
于 2010-12-02T03:36:43.863 に答える