JavaでJOptionPaneのメッセージダイアログに長いテキストを表示する方法
JOptionPaneは、JComponentクラスのサブクラスであり、モーダルダイアログボックスを作成・カスタマイズするためのstaticメソッドを多数提供しています。コードの複雑さを抑えられるため、JDialogクラスの代わりにJOptionPaneクラスを使用するのが一般的です。JOptionPaneは、4種類の標準アイコン(質問、情報、警告、エラー)や、ユーザーが指定したカスタムアイコンを使ってダイアログを表示できます。
デフォルトでは、JOptionPaneのメッセージダイアログは1行の短いテキストしかサポートしていません。しかし、JTextAreaクラスを組み合わせてカスタマイズすることで、長いテキストを快適に閲覧できるメッセージダイアログを実装することが可能です。
実装例
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JOptionPaneScrollTextMessage extends JFrame {
private JButton btn;
String msg;
public JOptionPaneScrollTextMessage() {
setTitle("JOptionPaneScrollTextMessage Test");
msg = " Java is a programming language that produces software for multiple platforms.\n When a programmer writes a Java application, the compiled code\n" + "(known as bytecode) runs on most operating systems (OS), including \n Windows, Linux and Mac OS. Java derives much of its syntax \n from the C and C++" + "programming languages.\n Java was developed in the mid-1990s by James A. Gosling, a former computer scientist with Sun Microsystems.";
btn = new JButton("Show Dialog");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JTextArea jta = new JTextArea(5, 15);
jta.setText(msg);
jta.setEditable(false);
JScrollPane jsp = new JScrollPane(jta);
JOptionPane.showMessageDialog(null, jsp);
}
});
add(btn, BorderLayout.NORTH);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JOptionPaneScrollTextMessage();
}
}
実行結果

コードのポイント
- JTextArea(5, 15):5行×15列のテキストエリアを生成し、複数行にわたる長文を格納します。
- setEditable(false):テキストエリアを読み取り専用にし、ユーザーが内容を編集できないようにします。
- JScrollPane:テキストエリアをラップすることで、表示領域を超える長文に対してスクロールバーが自動的に表示されます。
- showMessageDialog(null, jsp):文字列の代わりにJScrollPaneを直接渡すことで、スクロール可能な長文ダイアログとして表示できます。
このように、JOptionPaneにJTextAreaとJScrollPaneを組み合わせて渡すだけで、標準の1行メッセージでは収まらない長い説明文や詳細情報も、見やすくスクロールできる形でユーザーに提示できます。
-
JavaでJPanelのpaintComponent()メソッドを実装する方法をわかりやすく解説
JPanelはJavaにおける軽量コンテナであり、それ自体は不可視(インビジブル)なコンポーネントとして扱われます。デフォルトのレイアウトにはFlowLayoutが採用されています。JPanelを生成した後は、Containerクラスから継承されたadd()メソッドを呼び出すことで、ボタンやラベルなどの他のコンポーネントをJPanelオブジェクトに自由に追加できます。 paintComponent()メソッドとは このメソッドは、単なる背景色の描画にとどまらず、JPanel上に独自の図形や画像などを描画したい場合に必要となります。paintComponent()メソッドはすでにJPanelクラ
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー