質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1610閲覧

テキストフィールドに文字列を入力してEnterキーを押すと入力した文字列をテキストエリアに追加したい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/06/05 01:39

#実現したいこと
以下のプログラムは、テキストフィールドに文字を入力してEnterキーを押すと、テキストエリアに「あ」という文字を追加するプログラムですが、これをテキストフィールドの文字そのものを追加するプログラムにしたいのですがどうすればいいですか?
#該当のソースコード

Java

1import java.awt.FlowLayout; 2import java.awt.event.ActionEvent; 3import java.awt.event.ActionListener; 4 5import javax.swing.JFrame; 6import javax.swing.JLabel; 7import javax.swing.JTextArea; 8import javax.swing.JTextField; 9 10public class Enshu58 { 11 JTextArea ta; 12 JTextField tf; 13 public static void main(String[] args) { 14 new Enshu58(); 15 } 16 public Enshu58(){ 17 JLabel lb; 18 JFrame f; 19 f=new JFrame(); 20 f.getContentPane().setLayout(new FlowLayout()); 21 f.setSize(600,100); 22 lb=new JLabel(); 23 ta=new JTextArea(5,20); 24 tf=new JTextField(15); 25 f.getContentPane().add(lb); 26 f.getContentPane().add(ta); 27 f.getContentPane().add(tf); 28 tf.addActionListener(new Enshu58enter()); 29 f.setVisible(true); 30 } 31 class Enshu58enter implements ActionListener{ 32 public void actionPerformed(ActionEvent e){ 33 ta.append("あ"); //テキストエリアに「あ」を追加                  34 } 35}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

テキストフィールドからどうやって文字列を取得するか?

JTextField#getText。
文字列のクリアを伴う際は、JTextField#setTextに空文字列を渡します。


註: 実際にはこれらは親クラスJTextComponentのメソッドです。

clearみたいなメソッドがあるかと思ったんですが、見当たらないですね。
JTextComponent#cutだとクリップボードを汚染してしまいますし。

どうやってテキストフィールドにアクセスするか?

方法はいくつかあります。

  1. リスナークラスから直接ta及びtfにアクセスする方法

Enshu58enterはEnshuの内部クラスなので、taやtfにそのままアクセスすることができます。
意識されていないかもしれませんが、ご提示のコードでもtaにアクセスしていますよね。
0. ActionEventからイベント元を獲得する方法
既にdice142さんが回答されている方法です。
0. リスナークラスにコンストラクタを用意し、ta及びtfを引き渡す方法
最終的にフィールドとエリアの対を何組か作るならこの方法が有効です。
0. ActionListenerの匿名クラスを作る方法
その場で使い捨てのリスナーを作ることができます。
0. ラムダ式で匿名クラスを作る方法
直前の方法と本質的には同じです。
理解したうえで書けるのなら、この方法が最も洗練されていると言えるでしょう。

一番簡単なのは 1 です。
3 ならリスナーを外部クラスに切り離すことができます。
簡潔さを求めるなら 5 です。

意図的に少し詳しめな回答にしました。
学習の進度に合わせていろんな方法にチャレンジしてみて下さい。

投稿2019/06/05 05:05

編集2019/06/05 05:27
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/05 06:24 編集

とても詳しいご回答ありがとうございます。また時間のあるときに試してみようと思います。
退会済みユーザー

退会済みユーザー

2019/06/05 09:49

ありがとうございます。回答の1の方法で解決しました!
guest

0

ActionEventのgetSource()で呼び出し元のオブジェクト(=テキストフィールド)を取得します。
※キャストが必要なので注意

取得したテキストフィールドの値を取得してテキストエリアに設定すればできます。

投稿2019/06/05 04:30

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/05 06:24

ご回答ありがとうございます。また時間のあるときに試してみようと思います。
退会済みユーザー

退会済みユーザー

2019/06/05 09:49

ありがとうございます。解決しました!
guest

0

既存の値に追加したい場合にはJTextAeraクラスで定義されているappendメソッドを使います。
実際に追加しているサンプルを記載しておきます。
テキストエリアの作成

投稿2019/06/05 01:59

ices_sinon

総合スコア479

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/05 04:20

ご回答ありがとうございます。また時間のあるときに試してみようと思います。
dice142

2019/06/05 04:30

質問は値の追加ではなく、テキストフィールドの文字列の取得では?
退会済みユーザー

退会済みユーザー

2019/06/05 04:36

具体的にはテキストフィールドで取得した文字列をテキストエリアに追加するというものです。
ices_sinon

2019/06/05 04:41

すみません勘違いしていました。 申し訳ないです。
退会済みユーザー

退会済みユーザー

2019/06/05 09:50

いえいえ、ありがとうございます。解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問