2012-10-19 37 views
2

An idea of my GUI 我正在製作一個能夠完成多種工作的工具,而我現在正在使用最後一個功能: 您鍵入一個日期,它會告訴您該日的某一天是哪一天。如何使我的代碼在使用Java中的Swing的GUI中工作?

所以我這裏有兩個問題:

  1. 我不能使用的參數,它不喜歡他們
  2. 在最後一行,我不能使用jTextArea2.setText(D0);因爲它不喜歡,要麼...

我的代碼是在這裏:

public static void main(String[] args) { 
     int d = Integer.parseInt(args[0]); 
     int m = Integer.parseInt(args[1]); 
     int y = Integer.parseInt(args[2]); 

     int y0 = y - (14 - m)/12; 
     int x = y0 + y0/4 - y0/100 + y0/400; 
     int m0 = m + 12 * ((14 - m)/12) - 2; 
     int d0 = (d + x + (31*m0)/12) % 7; 

     System.out.println("Sunday = 0\nMonday = 1\nTuesday = 2\nWednesday = 3\nThursday = 4\nFriday = 5\nSaturday = 6\nThis date is on a:"); 
     System.out.println(d0); 

基本上,這個代碼是在第一次與控制檯的使用,現在我想落實到一個Swing GUI應用程序。

我只學習Java一週,所以請問如果問題明顯或容易解決......但任何人都可以弄清楚如何工作嗎?謝謝!

+3

這是一個相當複雜的要求,有的一隻有一個星期的經驗。我將首先閱讀[使用JFC/Swing創建GUI](http://docs.oracle.com/javase/tutorial/uiswing/index.html) – MadProgrammer

+1

@RazorShadow您可以使用'JFormattedTextField'獲取日期值。這是[示例](http://stackoverflow.com/q/4252257/1048330)。 – tenorsax

回答

1

您可以使用Calendar。 看看這段代碼,你會得到的想法

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR,2012); 
cal.set(Calendar.MONTH,0);//Note that months start at 0 i.e. January is 0 
cal.set(Calendar.DAY,1); 

System.out.println(cal.get(Calendar.DAY_OF_WEEK))); 
+0

這不會幫助我... –

+1

這個答案如何?充其量,這是一條評論 – MadProgrammer

+0

@Razor Shadow'我只有一週的時間學習Java,所以如果問題很明顯或容易解決,那麼請原諒......',那麼你怎麼知道是否可以發佈 – mKorbel

1

首先檢查是否確實有在ARGS 3種元素

 if(args.length == 3) 
     // colculate 
    else 
     System.out.println("Usage: java DateID <month> <day> <year>"): 
1

假設沒有被顯示着想你的GUI例如...

對於第二個問題,JTextArea從JTextComponent繼承,您將在其中找到the setText method。因爲它接受的字符串,而不是整數,你可能希望做類似:

String.valueOf(d0); 

,我相信你也可以串聯D0爲字符串字面 - 比如一個在你的println - 而且只是以及。

編輯:請記住,setText只會設置該字段的值。如果你想獲得文本,你需要在你指定的任何分隔符處使用the getText methodsplit the resulting string。結果將存儲在一個字符串數組中,然後您可以將其轉換爲整數並與日曆ala Abu的響應結合使用。

+0

你是什麼意思?如果你想看到我的GUI,我不知道你可以發佈圖像,直到我剛剛檢查。 另外我在哪裏準確地把這段代碼? –

+0

@RazorShadow對不起 - 我指的是代碼。代碼中有問題的部分應該是相關的,因爲你在問題中提到了它......現在看到它,你問爲什麼setText不能用作參數? –

+0

不完全是,我的問題到底是(對不起,如果我不清楚): 它不會讓我使用參數,所以我需要另一種方式讓用戶輸入日,月和年以便接收一年中的相應日期。此外,我需要替代最後一行,因爲它目前打印到控制檯,並且如果將其更改爲jTextArea2.setText(d0),它不會喜歡它。 –

2

你腳下的問題是日期到了什麼格式。

你只有提供的JTextArea爲他們進入的價值,這樣他們就可以進入任何事情......

所以,首先第一件事情,你需要通過它可以接受傳入的方法值...

public String toDayOfWeek(String date) { 
} 

從這裏你需要輸入值格式爲Date

String dayOfWeek = null; 
try { 
    Date date = DateFormat.getDateInstance().parse(date); 
} catch (ParseException exp) { 
    dayOfWeek = date + " is an invalid date format"; 
} 
return dayOfWeek; 

(顯然,上述所屬的toDayOfWeek(String)法)

現在,就個人而言,我會通過Date價值到另一種方法,但這導致我瘋了...

public String toDayOfWeek(Date date) { 
    // Now you could extract the various values from the Date object 
    // but those methods are deprecated... 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 

    int day = cal.get(Calendar.DATE); 
    int month = cal.get(Calendar.MONTH); // Months are 0 based 
    int year = cal.get(Calendar.YEAR); 

    // Your calculation here... 

    return yourDayCalculation; 
} 

但說實話,它會更簡單,更容易做到這一點...

public String toDayOfWeek(Date date) { 
    // Now you could extract the various values from the Date object 
    // but those methods are deprecated... 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 

    return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)]; 
} 

所以,你最終會得到兩種方法...

public String toDayOfWeek(String date) { 
    String dayOfWeek = null; 
    try { 
     Date date = DateFormat.getDateInstance().parse(date); 
     dayOfWeek = toDayOfWeek(date); 
    } catch (ParseException exp) { 
     dayOfWeek = date + " is an invalid date format"; 
    } 
    return dayOfWeek; 
} 

public String toDayOfWeek(Date date) { 
    // Now you could extract the various values from the Date object 
    // but those methods are deprecated... 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 

    return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)]; 
} 
相關問題