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

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

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

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

0回答

399閲覧

whileを用いた時間のリアルタイムがmainからは可能だが、クラスからできない

PPP1

総合スコア0

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2022/01/01 10:07

編集2022/01/01 13:28

前提・実現したいこと

Javaでリアルタイムで時間を表示するプログラムを作成しています。
homeのWatchボタンを押下すると、Watch画面に遷移し、時間がリアルタイムで表示したいです。

ここに質問の内容を詳しく書いてください。
watxhファイルのmain関数から実行するとリアルタイムで表示されますが、homeのボタン押下時にはリアルタイムで動作しません。

該当のソースコード

//home.java

import

1import javax.swing.*; 2import java.awt.event.*; 3 4 5public class home extends JPanel{ 6 public home(JFrame home){ 7 int i; 8 int x,y; 9 String[] app_name = {"Calc","Watch"}; 10 11 setLayout(null); 12 13 for(i = 0;i < app_name.length;i++) 14 { 15 x = (i % 3) * 50 + 50; 16 y = (int)(i / 3) * 50 + 50; 17 app_button nb = new app_button(x,y,app_name[i],home); 18 } 19 } 20 21 public class app_button{ 22 public app_button(int x,int y,String app_name,JFrame home){ 23 JButton ab = new JButton(app_name);//コンストラクタ 新しく生成 24 add(ab); ab.setBounds(x,y,50,50); 25 26 ab.addActionListener(new ActionListener() 27 { 28 public void actionPerformed(ActionEvent evt) 29 { 30 if(app_name == "Calc") 31 { 32 JFrame dentaku = new JFrame(); 33 dentaku.add(new dentaku(dentaku)); 34 dentaku.setSize(500,500); 35 dentaku.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 36 dentaku.setVisible(true); 37 home.setVisible(false); 38 } 39 else if(app_name == "Watch") 40 { 41 home.setVisible(false); 42 JFrame watch1 = new JFrame(); 43 44 while(true)//ここでリアルタイムで時間表示するためにwatchを呼び出し(できない) 45 { 46 watch1.add(new watch(watch1)); 47 watch1.setSize(500,500); 48 watch1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 49 watch1.setVisible(true); 50 } 51 52 } 53 } 54 }); 55 } 56 } 57 58 59 public static void main(String[] args){ 60 JFrame home = new JFrame(); 61 home.add(new home(home)); 62 home.setSize(500,500); 63 home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 64 home.setVisible(true); 65 66 JFrame watch1 = new JFrame(); 67 68 } 69} 70 71コード
import javax.swing.*; import java.awt.event.*; import java.util.Date; public class watch extends JPanel{//JPanelを独自に変更 JLabel watch_Label = new JLabel("東京"); JLabel watch_time = new JLabel(); public watch(JFrame watch1) { setLayout(null); add(watch_Label); watch_Label.setBounds(50,50,100,50); home_back_button hbb = new home_back_button(watch1); time(); } public void time() { var nowtime = new Date(); var nowhour = nowtime.getHours(); var nowminute = nowtime.getMinutes(); var nowsecond = nowtime.getSeconds(); try { Thread.sleep(100); watch_time = new JLabel(nowhour + "時" + nowminute + "分" + nowsecond + "秒"); add(watch_time); watch_time.setBounds(50,100,100,50); } catch(Exception e) { System.out.println("Error"); } } public class home_back_button{ public home_back_button(JFrame watch1){ JButton hbb = new JButton("Home"); add(hbb); hbb.setBounds(50,300,200,50); hbb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { JFrame home = new JFrame(); home.add(new home(home)); home.setSize(500,500); home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); home.setVisible(true); watch1.setVisible(false); } }); } } public static void main(String[] args){ JFrame watch1 = new JFrame(); while(true)//ここでリアルタイムで時間表示するためにwatchを呼び出し(できる) { watch1.add(new watch(watch1)); watch1.setSize(500,500); watch1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); watch1.setVisible(true); } } } コード
ソースコード

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

y_waiwai

2022/01/01 12:46

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
PPP1

2022/01/01 13:29

ご指導ありがとうございます。 編集いたしましたので、ご確認のほどよろしくお願いいたします。
javahack

2022/01/03 12:18

タグに「Java」を追加しましょう。 質問を見てもらえる可能性が高くなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問