Need Help regarding separate GUI and logic class

Hi,
I was given this assignment and I'm stuck big time.
Basically I have a GUI class for a stopwatch interface.
public class WatchGui implements Gui{
    JButton b1, b2;
    JLabel minutes, symbol1, seconds, symbol2, hundredths;
    StopWatch stopwatch;
    public WatchGui(){
         stopwatch = new StopWatch();
         b1 = new JButton("RUN");
        minutes = new JLabel("00");
        ActionListener al = new MyActionListener(stopwatch);
        b1.addActionListener(al);
    //  Called to connect a watch to the GUI
    public void connect(Watch w) {
    public void setDisplay(String mm) {
         minutes.setText(mm);
    public void addComponentsToPane(Container pane) {
        pane.setLayout(null);
        pane.add(b1);
        pane.add(b2);
        pane.add(minutes);
        Insets insets = pane.getInsets();
    public void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("XXX");
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Set up the content pane.
        WatchGui Pane = new WatchGui();
        Pane.addComponentsToPane(frame.getContentPane());
        //Size and display the window.
        Insets insets = frame.getInsets();
        frame.setVisible(true);
}I have a watch class which function as the engine for the stop watch
import java.awt.event.*;
import javax.swing.*;
class StopWatch implements Watch {
     WatchGui watchgui;
     public StopWatch() {
          running = false;
          count = 0;
    public void connect(Gui g) {
         watchgui = (WatchGui) g;
         watchgui.createAndShowGUI();
    public void runStop() {
         mm = String.valueOf("100");
     watchgui.setDisplay(mm);
class MyActionListener implements ActionListener {
     StopWatch stopwatch;
     public MyActionListener(StopWatch stopwatch) {
          this.stopwatch = stopwatch;
     public void actionPerformed (ActionEvent e) {
          stopwatch.runStop();
}To get the StopWatch to work, I have this driver class
import java.lang.reflect.Constructor;
public class Driver
    public static void main(String[] args)
      throws Exception
     if( args.length!=1 ){
         System.err.println("Usage: Driver WATCHNAME");
         System.exit(1);
         return;
     String watchName= args[0];
     Class cl= Class.forName(watchName,true,Thread.currentThread().getContextClassLoader());
     Constructor c[]= cl.getConstructors();
     if( c.length==0 ){
         System.err.println("There is NO constructor in your watch class");
         System.exit(1);
         return;
     if( c.length>1 ){
         System.err.println( "There is more than one constructor in your class");
         System.exit(1);
     //Construct the components
     Watch w=(Watch)c[0].newInstance(new Object[0]);
     Gui g= new WatchGui();
     //Connect them to each other
     g.connect(w);
     w.connect(g);
     //Reset the components()
     g.reset();
     w.reset();
     //And away we go...
     try{
         for(;;){
          Thread.sleep(10); //milliseconds
          w.tick();
     }catch(InterruptedException ie){
         System.exit(1);
}My currently problem is that when i click on the button in the GUI, it will go to MyActionListener class and call the runStop method.
public void runStop() {
     mm = String.valueOf("100");
     watchgui.setDisplay(mm);
The problem is that when watchgui.setDisplay(mm) is called, exception is thrown instead. I'm suspecting it has something to do with the initialization of watchgui. Can anyone advice?

import java.awt.*;
import java.awt.event.ActionListener;
import javax.swing.*;
public class WatchGui implements Gui{
     JButton b1, b2;
    JLabel minutes, symbol1, seconds, symbol2, hundredths;
    StopWatch stopwatch;
    public WatchGui(){
         stopwatch = new StopWatch();
         b1 = new JButton("RUN/STOP");
        b2 = new JButton("  RESET  ");
        minutes = new JLabel("00");
        symbol1 = new JLabel(":");
        seconds = new JLabel("00");
        symbol2 = new JLabel(".");
        hundredths = new JLabel("00");
        minutes.setFont(new Font("Arial", Font.BOLD, 40));
        symbol1.setFont(new Font("Arial", Font.BOLD, 40));
        seconds.setFont(new Font("Arial", Font.BOLD, 40));
        symbol2.setFont(new Font("Arial", Font.BOLD, 20));
        hundredths.setFont(new Font("Arial", Font.BOLD, 20));
        ActionListener al = new MyActionListener(stopwatch);
        b1.addActionListener(al);
    //  Called to connect a watch to the GUI
    public void connect(Watch w) {
    //Called to reset the GUI
    public void reset() {
         minutes.setText("00");
         seconds.setText("00");
         hundredths.setText("00");
    //Called whenever the value displayed by the watch changes
    public void setDisplay(String mm, String ss, String hh) {
         minutes.setText(mm);
         seconds.setText(ss);
         hundredths.setText(hh);
    public void addComponentsToPane(Container pane) {
        pane.setLayout(null);
        pane.add(b1);
        pane.add(b2);
        pane.add(minutes);
        pane.add(symbol1);
        pane.add(seconds);
        pane.add(symbol2);
        pane.add(hundredths);
        Insets insets = pane.getInsets();
        Dimension size = b1.getPreferredSize();
        b1.setBounds(50 + insets.left, 20 + insets.top,
                     size.width, size.height);
        size = b2.getPreferredSize();
        b2.setBounds(150 + insets.left, 20 + insets.top,
                     size.width, size.height);
        size = minutes.getPreferredSize();
        minutes.setBounds(75 + insets.left, 70 + insets.top,
                size.width, size.height);
        size = symbol1.getPreferredSize();
        symbol1.setBounds(120 + insets.left, 70 + insets.top,
                size.width, size.height);
        size = seconds.getPreferredSize();
        seconds.setBounds(135 + insets.left, 70 + insets.top,
                size.width, size.height);
        size = symbol2.getPreferredSize();
        symbol2.setBounds(182 + insets.left, 87 + insets.top,
                size.width, size.height);
        size = hundredths.getPreferredSize();
        hundredths.setBounds(190 + insets.left, 87 + insets.top,
                size.width, size.height);
    public void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("StopWatch");
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Set up the content pane.
        WatchGui Pane = new WatchGui();
        Pane.addComponentsToPane(frame.getContentPane());
        //Size and display the window.
        Insets insets = frame.getInsets();
        frame.setSize(300 + insets.left + insets.right,
                      150 + insets.top + insets.bottom);
        frame.setVisible(true);
import java.awt.event.*;
import javax.swing.*;
class StopWatch implements Watch {
     WatchGui watchgui;
     long startTime;
     boolean running;
     javax.swing.Timer timer;
     String mm, ss, hh;
     int count, tmp;
     public StopWatch() {
          running = false;
          count = 0;
          timer = new javax.swing.Timer(1000, new ActionListener()
               public void actionPerformed(ActionEvent e)
                     count++;
                     mm = String.valueOf(count);
                     ss = String.valueOf(count);
                     hh = String.valueOf(count);
                     watchgui.setDisplay(mm, ss, hh);
    //Called to connect the GUI to watch
    public void connect(Gui g) {
         watchgui = (WatchGui) g;
         watchgui.createAndShowGUI();
          //watchgui.setDisplay(mm, ss, hh);
    //Called to initialise the watch
    public void reset() {
         watchgui.reset();
    //Called to deliver a TICK to the watch
    public void tick() {
    //Called whenever the run/stop button is pressed
    public void runStop() {
         int a = 33;
         mm = "" + a;
          ss = "" + a;
          hh = "" + a;
          watchgui.setDisplay(mm, ss, hh);
         if (running == false) {
              count = 0;
              timer.start();
              running = true;
         }else {
              timer.stop();
              running = false;
    //Called whenever the lap/reset button is pressed
    public void lapReset() {}
class MyActionListener implements ActionListener {
     StopWatch stopwatch;
     public MyActionListener(StopWatch stopwatch) {
          this.stopwatch = stopwatch;
     public void actionPerformed (ActionEvent e) {
          stopwatch.runStop();
import java.lang.reflect.Constructor;
public class Driver
    public static void main(String[] args)
      throws Exception
     if( args.length!=1 ){
         System.err.println("Usage: Driver WATCHNAME");
         System.exit(1);
         return;
     String watchName= args[0];
     Class cl= Class.forName(watchName,true,Thread.currentThread().getContextClassLoader());
     Constructor c[]= cl.getConstructors();
     if( c.length==0 ){
         System.err.println("There is NO constructor in your watch class");
         System.exit(1);
         return;
     if( c.length>1 ){
         System.err.println( "There is more than one constructor in your class");
         System.exit(1);
     //Construct the components
     Watch w=(Watch)c[0].newInstance(new Object[0]);
     Gui g= new WatchGui();
     //Connect them to each other
     g.connect(w);
     w.connect(g);
     //Reset the components()
     g.reset();
     w.reset();
     //And away we go...
     try{
         for(;;){
          Thread.sleep(10); //milliseconds
          w.tick();
     }catch(InterruptedException ie){
         System.exit(1);
public interface Gui
    //Called to connect a watch to the GUI
    public void connect(Watch w);
    //Called to reset the GUI
    public void reset();
    //Called whenever the value displayed by the watch changes
    public void setDisplay(String mm, String ss, String hh);
interface Watch
    //Called to connect the GUI to watch
    public void connect(Gui g);
    //Called to initialise the watch
    public void reset();
    //Called to deliver a TICK to the watch
    public void tick();
    //Called whenever the run/stop button is pressed
    public void runStop();
    //Called whenever the lap/reset button is pressed
    public void lapReset();
}

Similar Messages

  • I need help regarding my microphone and playback for a VHF app just bought

    I have purchased the Royal Yachting Association VHF SRC App for my iMac and downloaded it.
    The programme asks me to test that my microphone is working and the playback is working.
    I have been to System Preferences and can record my voice to get text onto Word by pressing fn fn - so I know the mike is OK
    I have no idea whether the App does record my voice because when I press Playback nothing happens.
    My iTunes is working perfectly so I can listen to music and watch videos.
    Please help tell me what to do?

    Can we have more information on this.
    This problem might be because of:
    1. Wrong settings for kernel parameters
    2. Wrong environment variables
    3. Wrong access privileges to oracle database files and folders
    4. Improper shutting down or startup of database
    Please provide more information so that we can have some clues. As well, let us know which platform are you running the database on.

  • Need help regarding image scanning from scanner and resizing it...

    Hi,
    I need help regarding scanning of image directly from scanner. Here is the scenario when the person clicks scan button on the webpage should scan the image and resize it and store it in some temp location. Is there any way i can do this. Any Help regarding this would be great!!!
    Thanks,
    Avinash.
    Edited by: Kalakonda on Jul 24, 2009 8:08 AM

    Kalakonda wrote:
    I need help regarding scanning of image directly from scanner. Here is the scenario when the person clicks scan button on the webpage should scan the image and resize it and store it in some temp location. Is there any way i can do this. Any Help regarding this would be great!!!So what you are doing is you have a Scanner (hardware: like an HP flatbed scanner) attached to a server that you want to use as a scanning station? Is this the senario that you are talking about?

  • Hey guys need help regarding iTunes U. My school is moving for iOS and Mac in the classroom and I have been appointed Junior Administrator for the schools technical department and integrating these devices into the classroom.

    Hey guys need help regarding iTunes U. My school is moving for iOS and Mac in the classroom and I have been appointed Junior Administrator for the schools technical department and integrating these devices into the classroom.
    I have an appointment with a director on Tuesday. I want to demo iTunes U. Problem is I have never used it before and have no idea how to set it up and even if I should sign up.
    Please help any ideas regarding iTunes U and how I should direct the meeting tomorrow.
    Please please post here.
    Thanks
    Tiaan

    Greetings fcit@!A,
    After reviewing your post, it sounds like you are not able to select none as your payment type. I would recommend that you read this article, it may be able to help the issue.
    Why can’t I select None when I edit my Apple ID payment information? - Apple Support
    Thanks for using Apple Support Communities.
    Take care,
    Mario

  • Need Help Regarding JAVA BEAN

    Is any one tell me that JAVA BEAN only used in WEB or also you in Desktop applications???? and aslo tell how i implement Java class and use JAVA BEAN. I need help regarding above matter
    thanks in advance
    Rehan MIrza

    Here is a good link that indicate that JavaBean is not only for applets
    http://java.sun.com/docs/books/tutorial/javabeans/whatis/beanDefinition.html
    quote:
    The JavaBeans API makes it possible to write component software in the Java programming language. Components are self-contained, reusable software units that can be visually composed into composite components, applets, applications, and servlets using visual application builder tools. JavaBean components are known as Beans.
    Francois

  • I need help regarding installation of Netweaver 2004s

    Hi,
    I need help regarding installation of Netweaver. When ever i am running setup.exe, i am getting a page asking for local host and port number as 21212. When I enter my local host name and the port number as 21200 i am getting the error message given below and the installation stops. I am not able to proceed further. can any one help me what i need to do here. I created MS lookupadapter and entered my static ip address in 'host' file after 127.0.0.1 localhost and i disabled port number 3201 in system file. I verified system variables also. Everything is fine. I dont have firewall or antivirus installed in my system. Is there any thing else i need to do. please help me. Thanks in advance.
    " SAPinst is getting started.
    Please be patient ...
    starting gui server process:
      sapinstport: 21200
      guiport    : 21212
      guistart   : true
      command    : "C:\j2sdk1.4.2_09/bin\javaw.exe" -cp "C:/DOCUME1/ADMINI1/LOCALS1/Temp/sapinst_exe.6496.1162659801\jar\instgui.jar;C:/DOCUME1/ADMINI1/LOCALS1/Temp/sapinst_exe.6496.1162659801\jar\inqmyxml.jar" -Xmx256M -Dsun.java2d.noddraw=true SDTServer config=jar:sdtserver.xml guiport=21212 sapinsthost=localhost sapinstport=21200 guistart=true
    load resource pool G:\SAP\Softwares\IDES mySAP2005\51031898\IM_WINDOWS_I386\resourcepool.xml
    guiengine: no GUI connected; waiting for a connection on host (local hostname) , port 21200 to continue with the installation
    guiengine: login in process...............................
    guiengine: login timeout; the client was unable to establish a valid connection
    Exit status of child: 1"
    Regards,
    Farooq Shaik.

    Hi
    Run the sapinst.exe with the port 21212.This port 21212 is the default port used during the installation of netweaver.

  • I need help regarding measurement of "time domain parameters of Heart rate variability" using labview.

    I need help regarding measurement of "time domain parameters of Heart rate variability" using labview.
    I am using Labview 8 ... I  need to develop a software to accquire the ECG data (simulated enironment ) and compute the time domain parameters of Heart rate variability like "SDNN, SDANN...etc". Can some 1 plllzzzz help me out.Plzz help me if u can.Thanx in advance.

    Hi Andy,
      Thanx for responding.  The input is from a text file. SDNN, SDANN,etc are  the timedomain parameters of heart rate variability.
     SDNN: the standard deviation of the NN or RR interval  i.e. the square root of variance.
    SDANN:the standard deviation of the averageNN interval calculated over short periods, usually 5 min,which is an estimate of the changes in heart rate due tocycles longer than 5 min
    SDNN index, the meanof the 5-min standard deviation of the NN intervalcalculated over 24 h,
     RMSSD: the square root ofthe mean squared differences of successive NN intervals
    NN50: the number of interval differences of successiveNN intervals greater than 50 ms, and
    pNN50 the proportionderived by dividing NN50 by the total numberof NN intervals.
    The problem is dat I am a fresher to the world of Labview. I have jus recently started working on it. Can u please suggest me some some idea as soon as possible.
      As i said  I have the ECG data in the form of text files..I need to create sort of GUI to calculate the time domain parmeters....I need help urgently. Plzzz help me if u can. If u have and .vi example to calculate the RR interval plzz send it to me ASAP.
    Thanku

  • Need HELP regarding installinfg CR2008/Visual Advantage

    I need help regarding installing CR2008/Visual Advantage. I had the evaluation copy of cr2008. My compnay purchased the CR2008 Visual Advantage. Upon calling your customer service, I was told that I had to UN-install the CR2008 evaluation copy then install the CR2008. I did the unstall HOWEVER, when I try to install the CR2008 that we purchased, i get the following error..HR
    HR -2147024770-"c:\program files\business objects enterprise 12.0\win32_x86\REPORTCONVTOOL.DLL FAILED TO REGISTER"..
    I get more that just that one...I have received this before and based upon this formum, i have delted the regristry in the following using regedit.exe
    HKEY_LOCAL_MACHINE\SOFTWARE\BUSINESS OBJECT ;
    HKEY_CURRENT_USER\SOFTWARE\BUSINESS OBJECTS..
    Afeter i deleted the keys, I re-boot my pc and try to install the coftware again...BUT I GET THE SAME ERRORS...I have tryied this several times....what am i missing/not doing correctly

    Hi Shamish
    Actually you were on the right track, i think you just have to increase PSAPTEMP a bit and you will be fine. 358 MB seems just too small, i suggest you increase it to at least 2GB.
    1. what will be the difference in use of PSAPUNDO and PSAPTEMP while copy is running. ( i.e. what will be entered in PSAPUNDO and what will be filled in PSAPTEMP.)
    PSAPTEMP: is needed for large sort operations, as mentioned when you have a select with an ORDER BY clause, or if you do join two tables. During the client copy some sorting might be needed for special tables (cluster tables) where data is stored sorted.
    PSAPUNDO: undo space is only needed for DML (data manipulation), if data is changed undo is generated. This obviously is heavily the case during a client copy.
    2. the target client already has a copy taken 1 month before. so I think while importing it first delete existing data and then copies the new one.
    So If I first delete the target client and then take import on it; will it have advantage in regards of getiing UNDO or TEMP segments getting filled ?
    Deleting the client first might help for the undo problem, but you already solved that. I cannot imagine, it will help for the PSAPTEMP issue. As i said i would just increase PSAPTEMP and restart the copy.
    One more add: if you are doing the client copy with parallel processes, this will influence your requirements on temp and undo space, because of the concurrently running processes.
    Best regards
    Michael

  • Need Help Regarding Enabling The Matrix

    Hi All,
    We have got one user form and we have got one choose from list and one matrix, on click of choose from list the value will be displayed in the text box and at the same time matrix should get enabled. But it;s not happening in our case. The value is coming in the text box through choose from list but matrix is not getting enabled. We are able to change the back ground color of the matrix, make first column invisible and all but not able to enable the matrix. We need help regarding this one.
    Regards,
    Jayanth

    Hey first bind the columns of matrix to any user datasource
    and then you can enter any thing into your matrix 
    following code may help
    suppose you have one column
    oForm = SBO_Application.Forms.Item("URFRM")
    oUserDataSource = oForm.DataSources.UserDataSources.Add("URDSName",
    SAPbouiCOM.BoDataType.dt_SHORT_TEXT, 20)
    oMatrix=oForm.Item("URMATRX")
    oMatrix = oItem.Specific
    oColumns = oMatrix.Columns
    oColumn = oColumns.Item("URCOLName")
    oColumn.DataBind.SetBound(True, "", "URDSName")
    oMatrix.Addrow()
    hope this will help
    additionally you can look at this sample
    .....SAP\SAP Business One SDK\Samples\COM UI\VB.NET\06.MatrixAndDataSources

  • I need help regarding setting my mail accounts on macbook pro

    I need help regarding resetting my mail accounts on macbook pro

    What kind of accounts do you need to reset? IMAP or POP accounts using one of the many web-based messaging systems? An Exchange server account? Were they working and now just not working any longer?
    You're going to have to be a little more specific in what you need...
    Clinton

  • Need Help regarding text Output

    Dear gurus.
    I need help regarding formatting of a text.
    I want to format a employee sub group text.
    im getting a text workers (7) from a table t503t having field ptext.
    i want to show only (7) in the output not the whole text how can i do this ?
    Please help
    regards
    Saad.Nisar

    DATA: BEGIN OF itab_odoe OCCURS 0,
      department_text LIKE t527x-orgtx,"Holds the short text for department
      department_no LIKE pernr-orgeh,
      pernr LIKE pernr-pernr,
      ename LIKE pernr-ename,
      grade like t503t-ptext,   "THIS AREA GET ME TEXT OF EMPLOYEE SUBGROUP"
    *  department_text LIKE t527x-orgtx,"Holds the short text for department
      current_year LIKE sy-datum,
      wt0001 LIKE q0008-betrg,"Basic Pay
      wt1101 LIKE q0008-betrg," COLA
      wt3002 LIKE p0015-betrg,"Overtime
      per_basic type p DECIMALS 2,"Overtime percentage on basic
      per_basic_sum type p decimals 2,"Overtime Sum Division
      overtime_sum LIKE p0015-betrg,"holds sum of overtime
      basic_sum like q0008-betrg,"holds sum of basic
    END OF itab_odoe.
    Im using the select statement to get the employee subgroup from the table
    select single ptext
        from t503t
        into itab_odoe-grade
        where persk eq pernr-persk
        AND SPRSL eq 'EN'.
    now in itab_odoe-grade the values comes is Workers (7) , Snr Mgt (M3)
    i want to show only the text in Brackets.

  • Need Help Regarding  ibook

    em user of   iphone  3gs  os 6.1.6
    Yesterday  i restore ma  iphone
    after that  em  Unable  to   install    ibook in  ma iphone  its  say me that u  need  os 7 ...
    need help regarding this issue....   what i do  is there any alternative app  ...?

    Hey Seungly,
    I've realized that my computer runs fine UNLESS I turn the AirPort on to connect to the Internet. The moment I click "Turn AirPort On," the "You need to restart your computer" screen immediately pops up. Is there any connection between AirPort and my problem?
    That could very easily be the case, a bad Airport card. Look at this recent post:
    http://discussions.apple.com/thread.jspa?messageID=7960754&#7960754
    John diagnosed it from the panic log.
    Does yours say something similar?
    Richard

  • Need help with JSF table and scrollable pages

    I need help regarding usage of <t:dataTable>
    I have a List on my managed bean. It has 50 records.
    I am displaying the first 10 records and need to implement paging.
    I hear that there is a faces taglibrary called tomahawk which provides a <t:dataTable> and a <t:dataScroller> to implement scrolling.
    Is there a sample implentation that I can take a look at to see how I can solve my problem??
    Any help is highly appreciated.
    Thanks
    Amol

    Check here: http://www.irian.at/myfaces/dataScroller.jsf;jsessionid=F3F50A51583FEEF38D968A4AF5DC949C

  • I need help, yesterday I installed and reinstalled the Yosemite system and take long to turn on my laptop, the bar takes to fill, and I'm worried. Can you help? thank

    I need help, yesterday I installed and reinstalled the Yosemite system and take long to turn on my laptop, the bar takes to fill, and I'm worried.
    Can you help? thank

    revert back to Maverick that is what I had to finally do. This was the worst upgrade I have ever seen. Hopefully you have Time Machine backup and can revert back. It was pretty painless except for a few issues. I will wait until Apple gets their stuff together on this upgrade or may never will.

  • Need help with Blog, Wiki and Gallery

    Hi Team,
    Need help with Blog, Wiki and Gallery startup. I have newly started visiting forums and quite interested to contribute towards these areas also.
    Please help.
    Thanks,
    Santosh Singh
    Santosh Singh

    Hello Santhosh,
    Blog is for Microsoft employees only. However, you can contribute towards WIKI and GALLERY using the below links.
    http://social.technet.microsoft.com/wiki/
    http://gallery.technet.microsoft.com/

Maybe you are looking for