2015-09-15 70 views
1

我正在使用Netbeans。由于某些原因,这些文件无法运行。我试图导入Netbeans中标签中的其他文件,但它们不起作用。我怎样才能使这个应用程序运行SimpleDateClient.java作为主要方法。找不到符号:符号:class SimpleDate位置:class SimpleDateClient

这是SimpleDateClient.java

/* A client program to display SimpleDate object values 
    Anderson, Franceschi 
*/ 
package SimpleDateClient; 

import java.awt.*; 
import javax.swing.JFrame; 


public class SimpleDateClient extends JFrame 
{ 
    private String action = ""; 

    private int animationPause = 2; // 2 seconds between animations 


    private SimpleDate dateObj; // declare SimpleDate object reference 

    public void workWithDates() 
    { 
    animate("dateObj reference declared"); 

    /***** Add your code here *****/ 
    /**** 1. Instantiate dateObj using an empty argument list */ 
    dateObj = new SimpleDate(); 


    animate("Instantiated dateObj - empty argument list"); 

    /***** 2. Set the month to the month you were born */ 


    //animate("Set month to birth month"); 


    /***** 3. Set the day to the day of the month you were born */ 


    //animate("Set day to birth day"); 


    /***** 4. Set the year to the year you were born */ 


    //animate("Set year to birth year"); 


    /***** 5. Call the nextDay method */ 


    //animate("Set the date to the next day"); 


    /***** 6. Set the day to 32, an illegal value */ 


    //animate("Set day to 32"); 


    /***** 7. Set the month to 13, an illegal value */ 


    //animate("Set month to 13"); 


    /***** 8. Assign the value null to dateObj */ 


    //animate("Set object reference to null"); 


    /***** 9. Attempt to set the month to 1 */ 

    } 

    public SimpleDateClient() 
    { 
    super("A SimpleDate Object"); 

    setSize(300, 300); 
    setVisible(true); 
    } 

    public void paint(Graphics g) 
    { 
    super.paint(g); 

    // display action 
    g.drawString(action, 50, 250); 

    // object reference 
    int sX = 50, sY = 75; 
    int boxL = 75, boxH = 20; 
    g.drawRect(sX, sY, boxL, boxH); 
    g.drawString("dateObj", sX, sY - 10); 

    if (dateObj != null) 
     draw(g); 
    else 
     g.drawString("null", sX + 15, sY + 15); 
    } 

    public void draw(Graphics g) 
    { 
    int sX = 50, sY = 75; 
    int boxL = 75, boxH = 20; 

    // arrow 
    g.drawLine(sX + boxL, sY + boxH/2, 
       sX + boxL + 25, sY + boxH/2); 
    g.drawLine(sX + boxL + 25, sY + boxH/2, 
       sX + boxL + 25, sY + boxH * 2); 
    g.drawLine(sX + boxL + 25 - 5, sY + boxH * 2 - 5, 
       sX + boxL + 25, sY + boxH * 2); 
    g.drawLine(sX + boxL + 25 + 5, sY + boxH * 2 - 5, 
       sX + boxL + 25, sY + boxH * 2); 


    // month 
    g.drawString("month", sX + boxL - 50, sY + 2 * boxH + 15); 
    g.drawRect(sX + boxL, sY + 2 * boxH, boxL, boxH); 
    g.drawString(Integer.toString(dateObj.getMonth()), 
        sX + boxL + 5, sY + 2 * boxH + 15); 

    // day 
    g.drawString("day", sX + boxL - 50, sY + 3 * boxH + 15); 
    g.drawRect(sX + boxL, sY + 3 * boxH, boxL, boxH); 
    g.drawString(Integer.toString(dateObj.getDay()), 
        sX + boxL + 5, sY + 3 * boxH + 15); 

    // year 
    g.drawString("year", sX + boxL - 50, sY + 4 * boxH + 15); 
    g.drawRect(sX + boxL, sY + 4 * boxH, boxL, boxH); 
    g.drawString(Integer.toString(dateObj.getYear()), 
        sX + boxL + 5, sY + 4 * boxH + 15); 
    } 

    public void animate(String a) 
    { 
    action = a; 
    repaint(); 
    Pause.wait((double) animationPause); 
    } 

    public static void main(String [] args) 
    { 
    SimpleDateClient app = new SimpleDateClient(); 
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    app.workWithDates(); 
    } 
} 

这是SimpleDate.java

/* A simple date class 
    Anderson, Franceschi 
*/ 
package SimpleDateClient; 


public class SimpleDate 
{ 
    private int month; 
    private int day; 
    private int year; 

    /** default constructor 
    * sets month to 1, day to 1 and year to 2000 
    */ 
    public SimpleDate() 
    { 
    setDate(1, 1, 2000); 
    } 

    /** overloaded constructor 
    * @param mm initial value for month 
    * @param dd initial value for day 
    * @param yyyy initial value for year 
    * 
    * passes parameters to set methods 
    */ 
    public SimpleDate(int mm, int dd, int yyyy) 
    { 
    setMonth(mm); 
    setYear(yyyy); 
    setDay(dd); 
    } 

    /* accessor methods */ 
    int getMonth() { return month; } 
    int getDay() { return day; } 
    int getYear() { return year; } 

    /** mutator method */ 
    /** setMonth 
    * @param mm new value for month 
    * if mm is between 1 and 12, sets month to mm 
    * otherwise, sets month to 1 
    */ 
    public void setMonth(int mm) 
    { 
    month = (mm >= 1 && mm <= 12 ? mm : 1); 
    } 

    /** setDay 
    * @param dd new value for day 
    * if dd is legal day for current month, sets day to dd 
    * otherwise, sets day to 1 
    */ 
    public void setDay(int dd) 
    { 
    day = (dd >= 1 && isValidDay(dd) ? dd : 1); 
    } 

    /** setYear 
    * @param yyyy new value for year 
    * sets year to yyyy 
    */ 
    public void setYear(int yyyy) 
    { 
    year = yyyy; 
    } 

    /** sets date to the next day 
    */ 
    public void nextDay() 
    { 
    if (! isValidDay(++day)) 
    { 
     day = 1; 
     if (++month > 12) 
     { 
      month = 1; 
      year++; 
     } 
    } 
    } 

    private boolean isValidDay(int newDay) 
    { 
    int [] daysInMonth = { 0, 31, 28, 31, 
           30, 31, 30, 
           31, 31, 30, 
           31, 30, 31 }; 

    if (newDay > daysInMonth[month]) 
    { 
     if (month == 2 && isLeapYear() && newDay == 29) 
      return true; 
     else 
      return false; 
    } 
    else 
     return true; 

    } 

    private boolean isLeapYear() 
    { 
    return !(year % 4 != 0 
       ||(year % 100 == 0 && year % 400 != 0)); 
    } 


    /** setDate 
    * @param mm new value for month 
    * @param dd new value for day 
    * @param yyyy new value for year 
    * passes parameters to setMonth, setDay, and setYear 
    */ 
    public void setDate(int mm, int dd, int yyyy) 
    { 
    setYear(yyyy); // set year first (could be leap year) 
    setMonth(mm); // set month next 
    setDay(dd);  // set day 
    } 

    /** toString 
    * @return String 
    * returns date in mm/dd/yyyy format 
    */ 
    public String toString() 
    { 
    return month + "/" + day + "/" + year; 
    } 

    /** equals 
    * @param d Object to compare to this object 
    * @return true if d is equal to this object 
    *   false, otherwise 
    */ 
    public boolean equals(Object d) 
    { 
    if (!(d instanceof SimpleDate)) 
     return false; 
    SimpleDate d1 = (SimpleDate)d; 
    if (month == d1.month 
     && day == d1.day 
     && year == d1.year) 
     return true; 
    else 
     return false; 
    } 
} 

这是Pause.java

/* Pause class to pause applications 
    Anderson, Franceschi 
*/ 
package SimpleDateClient; 

public class Pause 
{ 
    public static void wait(double seconds) 
    { 
    try 
    { 
     Thread.sleep((int) (seconds * 1000)); 
    } 
    catch (InterruptedException e) 
    { 
     e.printStackTrace(); 
    } 
    } 
} 

For the SimpleDate class, it is giving me an error along with the Pause class

Pause

Files

+0

但是,你的代码对我来说很好。不要在Swing中使用'Thread.sleep',这会给你带来问题,Swing是单线程的,而不是线程安全的,这意味着你永远不应该从Event Dispatching Thread的上下文之外更新UI的状态,也不应该你应该用任何长时间运行的任务来阻塞EDT(比如'Thread.sleep'。看看[并发中的Swing](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)和[How使用Swing定时器](http://docs.oracle.com/javase/tutorial/uiswing/misc/timer。html)获取更多信息 – MadProgrammer

+0

避免重写顶级容器的'paint',有太多的问题可能会搞砸你的画图代码,而是使用'JPanel'并覆盖它的'paintComponent'并将你的自定义绘画放在那里。然后将面板添加到您喜欢的任何容器中。 [在AWT和Swing中绘制](http://www.oracle.com/technetwork/java/painting-140037.html)和[执行自定义绘画](http://docs.oracle.com/javase/tutorial/uiswing/painting /) – MadProgrammer

+0

哦,你应该在EDT的上下文中开始你的代码,这将解决大量可能的问题,参见[初始线程](http://docs.oracle.com/javase /tutorial/uiswing/concurrency/initial.html) – MadProgrammer

回答

0

转到File | New Project

Project

选择JavaProjectsCategoriesJava Application,单击Next >

New Project

名称的项目,并确保您设置初始包/班

Project Properties

您现在应该有你的项目的beginings。

Project Navigator

现在是一个选择,是否你现有的文件复制到项目(在Windows下你可以简单地将文件从资源管理器中复制并粘贴到该项目(src节点下))或在项目中创建空的类,并简单地复制粘贴从原始文件中的内容

+0

哦,地狱,谢谢很多人。我实际上是在你发布这个之前做的。你真的是一个疯狂的程序员。它正在工作。 –

0

我发现如何做到这一点。

将鼠标悬停在项目上。右键点击。点击Properties

点击Add Folder...旁边的Source Package Folders:然后选择您要使用的文件或文件夹。然后点击Ok