javaのNetBeansについて質問です。
ボタンを押すと、NetBeansでつくったテキストファイルの中身をテキスト領域に表示するようにしたいのですが、調べても分からなくて困っています
教えてください。よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
ボタンを押すと、NetBeansでつくったテキストファイルの中身をテキスト領域に表示するようにしたい
これは次のようなことをしたいということだと思います。
JavaのGUIアプリケーションにボタンとテキストのコントロールを表示し、ボタンを押すとあるテキストファイルの中身を読み込んでそれをテキストコントロール上へ表示する。
以下を仮定し、簡単な例を載せておきます。
- packageはcom.example
- メインクラスはcom.example.MyMain
- メインクラスのjavaソースと同じ場所にNetBeansでtest.txtというテキストファイルを作成しておく。(エンコーディングはUTF-8)
- Javaの言語仕様は1.8前提
- GUIライブラリーはswing前提(※)
java
1package com.example; 2 3import javax.swing.*; 4import java.awt.*; 5import java.io.BufferedReader; 6import java.io.IOException; 7import java.io.InputStream; 8import java.io.InputStreamReader; 9import java.io.StringWriter; 10import java.nio.charset.StandardCharsets; 11 12public class MyMain extends JFrame { 13 public static void main(String[] args) { 14 SwingUtilities.invokeLater(() -> new MyMain().setVisible(true)); 15 } 16 17 JTextArea textArea; 18 19 MyMain() { 20 super("text sample"); 21 22 int rows = 100; 23 int columns = 80; 24 textArea = new JTextArea(rows, columns); 25 JScrollPane scroll = new JScrollPane(textArea); 26 scroll.setPreferredSize(new Dimension(300, 300)); 27 28 JButton button = new JButton("display text"); 29 button.addActionListener(ev -> displayText()); 30 31 JPanel mainPanel = (JPanel)getContentPane(); 32 mainPanel.add(scroll, BorderLayout.CENTER); 33 mainPanel.add(button, BorderLayout.SOUTH); 34 35 setDefaultCloseOperation(EXIT_ON_CLOSE); 36 pack(); 37 } 38 39 void displayText() { 40 InputStream is = getClass().getResourceAsStream("test.txt"); 41 try ( 42 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); 43 BufferedReader br = new BufferedReader(isr)) { 44 StringWriter sw = new StringWriter(); 45 br.lines().forEach(line -> { 46 sw.append(line); 47 sw.append('\n'); 48 }); 49 textArea.setText(sw.toString()); 50 } catch (IOException ex) { 51 throw new RuntimeException(ex); 52 } 53 } 54}
※: 最新のJavaの標準GUIライブラリーはJavaFXです。JavaFXだとレイアウトをFXMLファイルへ書くなどサンプルが少々複雑になります。それらを省きコードのみでも書けはするのですが本来の書き方にはならない気がしますので、より単純なswingの例を上げさせていただきました。
GUIを今後学ぶということなら本当はJavaFXの方をお勧めしたほうがよいかも知れません。
投稿2017/05/31 06:41
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。