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

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

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

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

Q&A

解決済

1回答

291閲覧

java:時刻の表示がされない

univ

総合スコア15

Java

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

0グッド

0クリップ

投稿2019/01/20 12:34

前提・実現したいこと

ボタンとテキストフィールドを配置し,時刻の表示ボタンを押すと,テキスト フィールドに現在の時刻を表示し,クリアボタンを押すと表示をクリアするというプログラムを作っています。

発生している問題・エラーメッセージ

コンパイルも通り実行もできます。しかし「時刻の表示」ボタンと「クリア」ボタンをクリックしても何の表示もされません。

エラーメッセージ

該当のソースコード

java

1import java.awt.*; 2import java.awt.event.*; 3import java.util.Date; 4 5public class K7{ 6 public static void main(String[] args){ 7 GUIFrame guiFrame=new GUIFrame(); 8 guiFrame.setVisible(true); 9 } 10} 11 12class GUIFrame extends Frame implements ActionListener{ 13 14 Button button1 = new Button("時刻の表示"); 15 Button button2 = new Button("クリア"); 16 17 public GUIFrame(){ 18 super("時刻表示"); 19 addWindowListener(new WindowAdapter(){ 20 public void windowClosing(WindowEvent e){ 21 System.exit(0); 22 } 23 }); 24 25 setLayout(new FlowLayout()); 26 setSize(500,500); 27 setBackground(Color.LIGHT_GRAY); 28 add(button1); 29 add(button2); 30 add(new TextField(40)); 31 button1.addActionListener(this); 32 button2.addActionListener(this); 33 34 } 35 36 public void actionPerformed(ActionEvent e){ 37 Date date = new Date(); 38 TextField tf = new TextField(); 39 if(e.getSource() == button1){ 40 tf.setText(date.toString()); 41 } 42 else{ 43 tf.setText(""); 44 } 45 } 46 47}

試したこと

なにがだめなのか考え、調べましたが、なにを変えても変わりませんでした。

補足情報(FW/ツールのバージョンなど)

GUI表示にはAWTを使用

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

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

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

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

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

guest

回答1

0

ベストアンサー

Java

1add(new TextField(40));

でテキストフィールドを設置していますが、これは

Java

1 public void actionPerformed(ActionEvent e){ 2 Date date = new Date(); 3 TextField tf = new TextField(); 4 if(e.getSource() == button1){ 5 tf.setText(date.toString()); 6 } 7 else{ 8 tf.setText(""); 9 } 10 }

ここのテキストフィールドとは無関係です。

ボタンをクリックした時のテキストフィールドは毎回新規で生成されたものなので、
ウィンドウに設置したテキストフィールドを使いたいのであれば
ボタン同様インスタンス変数にするなどで対応する必要があります。


根本的な話ですが、AWTは今や非推奨になっているものです。
JavaFX等を使用したほうが良いかと思います。

投稿2019/01/20 12:41

dice142

総合スコア5158

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

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

univ

2019/01/20 12:48

その部分が原因だったのですね。勉強不足でした。 早速直してきます。早い回答ありがとうございました。 AWT非推奨なんですね。使っている資料がそういう指定になっていたものでしたので、教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問