Java - 展示时间&更新JOptionPane中的时间

时间:2015-10-19 12:16:32

标签: java swing

我尝试使用JOptionPane让当天的时间出现在窗口中,并按下确定按钮让窗口更新时间。

我有时间出现但是当我点击" OK"时无法更新它。按钮..

这是我的代码(我是初学者,所以它有点"凌乱",我知道!)

package p2; 
import javax.swing.JOptionPane;
import java.util.Date;
import java.util.Calendar;

public class Exercise2b {
    private int hour;
    private int minute;
    private int second;

    public void demo() {

        String message1, message2;
        Calendar cal = Calendar.getInstance();
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    int second = cal.get(Calendar.SECOND);
    message1 = "Klockan är "+hour+":"+minute+":"+second;
    message2 = toString();
    JOptionPane.showMessageDialog(null, message1);
    JOptionPane.showMessageDialog(null, message2);
    }

     public Exercise2b(int hour, int minute, int second) {
         this.hour = hour;
         this.minute = minute;
         this.second = second;
     }

        public Exercise2b() {
    }

        public int getHour() {
            return this.hour;
        }

        public int getMinute() {
            return this.minute;
        }

        public int getSecond() {
            return this.second;
        }
         public String toString() {
                return this.hour +":"+ this.minute+ ":"+ this.second + " ";
         }



      public static void main(String[] args) {
         Exercise2b prog = new Exercise2b();
         prog.demo();

     }



}

2 个答案:

答案 0 :(得分:0)

你正在创建局部变量而不是使用全局变量,你还需要再次从日历中分配值,否则日期不会改变,因为日历只是时间的快照,它不会改变,所以你需要再次致电getInstance()

尝试这样做

     public void demo() {
        String message1, message2;
        message1 = "Klockan är " + getHour() + ":" + getMinute() + ":" +            getSecond();    
        JOptionPane.showMessageDialog(null, message1);  
        message2 = toString();      
        JOptionPane.showMessageDialog(null, message2);
    }

    public int getHour() {
        return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    }

    public int getMinute() {
        return Calendar.getInstance().get(Calendar.MINUTE);
    }

    public int getSecond() {
        return Calendar.getInstance().get(Calendar.SECOND);
    }

    public String toString() {
        return getHour() + ":" + getMinute() + ":" + getSecond() + " ";
    }

答案 1 :(得分:0)

在toString()中,您应该获得当前的小时,分​​钟和秒。也许你可以提取这个:

abstract

到一个方法,格式化为字符串并返回(Calendar实例可以是一个字段,因为它是一个非常重量级的对象)。这样,您就可以在demo()和toString()方法中重用逻辑。