Needs to submit a program with Create icon

Hi experts,
I need to submit SAPRCKCC. Once the program SAPRCKCC got executed, in the selection screen i need to click Create Icon after that i need to pass the required values.
The requirement is,
How to submit SAPRCKCC with clicking of create icon
Can anyone guide me.
Mohana

AT SELECTION-SCREEN.
  IF sy-ucomm <> 'CREATE'.  " FC code for your button.
  SUBMIT <Pgname> VIA SELECTION0-SCREEN
                WITH SELECTION-TABLE
ENDIF

Similar Messages

  • Need to submit a program with a variant

    Hi all,
    This is my code i need to submit RSIRCCON program to this program with a variant . I have created a variant with a name "VARIANT1" . After excuting this program am getting an error message "VARIANT VARIANT1 does not exist " .
    Can any one help me to resolve this issue .
      Z_RSIRCCON_2                                                *
    REPORT  Z_RSIRCCON_2  NO STANDARD PAGE HEADING
                                       LINE-SIZE  255
    TABLES                                                              *
                                       LINE-COUNT 65.
    TABLES: somlreci1.
    *Global Variables                                                      *
    DATA: repository(255) TYPE C,
          L_PROGRAMM LIKE RS38M-PROGRAMM,
          variant1 like RS38M-SELSET.
    l_programm = 'Z_RSIRCCON_2'.
    variant1   = 'VARIANT1'.
    SELECTION SCREEN                                                    *
    SELECTION-SCREEN BEGIN OF BLOCK b1  WITH FRAME TITLE text-001.
    SELECT-OPTIONS: p_repos FOR repository.
    PARAMETER:p_single AS CHECKBOX USER-COMMAND run,
              p_multi AS CHECKBOX USER-COMMAND run,
              p_run AS CHECKBOX USER-COMMAND run.
    SELECTION-SCREEN END OF BLOCK  b1.
    SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-043.
    PARAMETER :p_esub TYPE repository.
    SELECT-OPTIONS:p_email  FOR somlreci1-receiver MODIF ID sc6 .
    SELECTION-SCREEN END OF BLOCK  a1.
    START-OF-SELECTION                                                  *
    CALL FUNCTION 'RS_PROGRAM_POPUP_VARIANT'
      EXPORTING
        progname               = l_programm
        VARIANT                = VARIANT1
      DEBG                   = ' '
      MESSAGE_ON_POPUP       = ' '
    IMPORTING
      OK_CODE                =
      NEW_VARIANT            =
    EXCEPTIONS
      NO_VARIANT             = 1
      OTHERS                 = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    submit RSIRCCON VIA SELECTION-SCREEN using SELECTION-SET 'VARIANT1' AND RETURN.
    null

    Hi,
    You cannot user the variant of 'Program 1' to call the 'Program 2'.
    When you write the statement
    SUBMIT RSIRCCON VIA SELECTION-SCREEN USING SELECTION-SET 'VARIANT1' AND RETURN.
    it means that you are trying to submit the program RSIRCCON with the selection screen variant 'VARIANT1'. SAP expect this variant to be of program RSIRCCON not your calling 'Z' program. Since program RSIRCCON does not have any selection-screen, you can not create a variant and thus you cannot submit it with selection-set variant.
    Please refer to the documentation for command 'SUBMIT' for more information.
    http://help.sap.com/saphelp_47x200/helpdata/en/9f/dba51a35c111d1829f0000e829fbfe/frameset.htm
    Regards,
    RS

  • Submit a program with two variants

    Hi all,
    There is one program which needs to run everyday with two different variants
    ( For this i need to have two jobs ).
    Now, i need to write a new program which submits the above program with two variants. How do i do it?
    Thanks
    Abhijith H

    You don't need two jobs, you can have 1 job with two steps,  each step would call the progam with the different variant.
    If you want to write a program which submits the program twice with two different variants, you can use the SUBMIT statement.  Here VARIANT1 is the name of a variant.
    SUBMIT ZREPORT01
           USING SELECTION-SET 'VARIANT1'
           AND RETURN.
    Regards,
    Rich Heilman

  • ST3B17.1 Error with create icon when login with KO language

    I have bug 12405347 for ST3:B17.1.
    When login with Korean language from FSM, we get the following error clicking on the create icon on an application table:
    status=500,ecid=000IyPN0iN7y0A5jbP5if1Dhqlf00083z
    -------- in the Payable log -----------------
    in the Payables log
    Caused by: javax.el.ELException: java.lang.NullPointerException
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:266)
    at
    com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.j
    ava:173)
    at
    com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.ja
    va:200)
    at com.sun.el.parser.AstValue.getValue(Unknown Source)
    at com.sun.el.parser.AstOr.getValue(Unknown Source)
    at com.sun.el.ValueExpressionImpl.getValue(Unknown Source)
    at
    oracle.adf.view.rich.component.fragment.UIXInclude$ContextualFacesBeanWrapper.
    getProperty(UIXInclude.java:574)
    at
    org.apache.myfaces.trinidad.bean.util.ValueMap.get(ValueMap.java:67)
    at
    oracle.adf.view.rich.component.fragment.UIXInclude$AttrMap.get(UIXInclude.java
    :481)
    at javax.el.MapELResolver.getValue(MapELResolver.java:164)
    at
    com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.ja
    va:200)
    at com.sun.el.parser.AstValue.getValue(Unknown Source)
    at com.sun.el.ValueExpressionImpl.getValue(Unknown Source)
    at
    org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:
    68)
    at o
    and
    Caused by: java.lang.NullPointerException
    at
    oracle.apps.financials.cashManagement.bankRelationships.ui.bean.BankAccountSea
    rchBean.isDisableEditButton(BankAccountSearchBean.java:466)
    at sun.reflect.GeneratedMethodAccessor134086.invoke(Unknown Source)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.j
    ava:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:261)
    at
    com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.j
    ava:173)
    at
    com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.ja
    va:200)
    at com.sun.el.parser.AstValue.getValue(Unknown Source)
    at com.sun.el.parser.AstOr.getValue(Unknown Source)
    at com.sun.el.ValueExpressionImpl.getValue(Unknown Source)
    at
    oracle.adf.view.rich.component.fragment.UIXInclude$ContextualFacesBeanWrapper.
    getProperty(UIXInclude.java:574)
    at
    org.apache.myfaces.trinidad.bean.util.ValueMap.get(ValueMap.java:66)
    at
    oracle.adf.view.rich.component.fragment.UIXInclude.getAttribute(UIXInclude.jav
    a:279)
    at
    oracle.adf.view.rich.component.fragment.UIXInclude$AttrMap.get(UIXInclude.java
    :481)
    at javax.el.MapELResolver.getValue(MapELResolver.java:164)
    at
    com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.j
    ava:173)
    java.lang.IllegalAccessException: Class
    org.apache.myfaces.trinidad.bean.util.StateUtils$Saver can not access a
    member of class
    oracle.adfinternal.view.faces.dynamic.DynamicForm$DependentValueChangeListener
    with modifiers ""
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
    at java.lang.Class.newInstance0(Class.java:349)
    at java.lang.Class.newInstance(Class.java:308)
    at
    org.apache.myfaces.trinidad.bean.util.StateUtils$Saver.restoreState(StateUtils
    .java:576)
    at
    org.apache.myfaces.trinidad.bean.util.StateUtils.restoreStateHolder(StateUtils
    .java:454)
    The error occurs only when using FSM and login with the Korean language. There are no issue if we access the page with the direct URL:
    http://fusionsystemtest-z-fs.us.oracle.com/payables/faces/CeManageBank
    Also, there are no issue when login with the English languge. I cannot reproduce the error locally using jdeveloper either.
    @###Environment name and url
    https://fusionsystemtest-z-fs.us.oracle.com/homePage/faces/AtkHomePageWelcome
    @###Steps to reproduce, including username / password & data used
    1. Login cash_manager / Welcome1 using Korian Login.
    2. Navigate to Setup and Maintenance > All Tasks > Name:Manage Bank% > Search
    3. Click on Go to Task button against Manage Bank Accounts record
    4. In Manage Bank Account page click on Create Icon - Error Message Appears.
    In the error message after the Korean characters (status=500,ecid=000IyPN0iN7y0A5jbP5if1Dhqlf00083z) message is displayed.
    Can you please advice how I can debug this issue?
    thanks,
    Lynn
    Edited by: user713482 on May 5, 2011 11:04 AM

    Look like you are an Oracle employee. In this case you should post your question on an internal forum and not on the public OTN forum.
    Timo

  • Submit a program with LDB

    Hi,
    My Issue is when I execute a program (ZRHECM_PRINT_CRS Copy of  RHECM_PRINT_CRS) directily It is generating the output for me in the form of xstring, But when I submit it with same parameter inside a function module It is not going to (get) statement.
    This program is using pnpce(LDB)
    Is there a problem in submiting a program Using LDB?
    Here is what  I Submit .What should be done ?
    SUBMIT  zrhecm_print_crs  WITH pnppernr-low    = pernr
                                WITH PNPTIMED        = PNPTIMED
                                WITH p_carea         = p_carea
                                WITH p_ccatg         = p_ccatg
                                WITH p_cplan         = p_cplan
                                WITH p_crevi         = p_crevi
                                WITH pnpbegda        = begda
                                WITH pnpendda        = endda
                                WITH pnpstat2-low    = stat2
                                WITH pnpbtrtl-low    = btrtl
                                WITH pnpwerks-low    = werks
                                WITH pnppersg-low    = persg
                                WITH pnppersk-low    = persk
                                AND RETURN.

    You don't need two jobs, you can have 1 job with two steps,  each step would call the progam with the different variant.
    If you want to write a program which submits the program twice with two different variants, you can use the SUBMIT statement.  Here VARIANT1 is the name of a variant.
    SUBMIT ZREPORT01
           USING SELECTION-SET 'VARIANT1'
           AND RETURN.
    Regards,
    Rich Heilman

  • The tool "Report a broken website" doesn't work. Need to submit a report with screenshots.

    Example of problem on http://constitution.org/rror/rror--00.htm
    iframe content often displayed in the wrong places, or sometimes not at all. Similar problem with other pages on site. Pages display correctly with IE, Google Chrome, Safari, and sometimes in Firefrox as well, especially just after a new start, so the problem is not the underlying HTML, and the fact that Firefox usually does initially display it correctly, but fails to do so after running a while, suggests something like a memory leak.
    Using Firefox v. 3.6.23 Linux under Fedora.

    I had already tried clearing everything, which didn't work. Just tried changing the network.http.pipelining value to true in prefs.js by entering about:config in the location field of the browser, and rebooted the system. That seems to work, for now, but rebooting the system has worked before -- for a while. It should not be necessary to have to frequently reboot to avoid the problem. For that matter, it should not be necessary to have to edit the prefs.js file. Other browsers seem to work without having to do that.

  • How to Run std program with a specific variant for specific user?

    Hi guys
    We have a std program which will be run by different users in the company. Now the requirement is to make sure that each user runs the report with a specific varaint. Can we control this if yes how?
    one options we thought about was to create a transaction in SE93 and define the program to run with a predefined varaint and assign the new custom tcode to the user profile. But we have many different users and we will end up with creating many transactions which we would like to avoid. Is there any other option to control the std program such that each user can run the program only with a pre-defined varaint and the one which only the user is suppoed to run. thanks in advance.

    We have a std program which will be run by different users in the company. Now the requirement is to make sure that each user runs the report with a specific varaint. Can we control this if yes how
    you can do this..
    You can create a Custom table
    userid     keyfield
    program  keyfield
    variant    keyfield
    programdesc
    Make the table Maintaintable(usnig table maintenance )
    Now create another Program
    It takes input of the Program name( using selection screen)
    LOGIC
    in side that place a logic ,
    Based on the user name  and program name Get the variant name from above table
    Now Submit the program with the variant you have selected above.
    Use Variant Addition when you use SUBMIT
    So now program executed based on user variant.
    Now you create a Transaction for this program.
    When use Runs the Transaction , user needs to input the Program name which he wants to execute.
    and Output will be shown based on the variants
    Regards
    Vijay Babu Dudla

  • Pass parameter to program (with LDB) submitted in background

    Hello,
    For a particular requirement, I need to submit the program RPLPAY00 in background.
    I need to extract data for the 'Current Year' which appears as a radiobutton on screen
    However, it comes from the logical database PNP
    I have written code as follows
    *& Report  ZRUN_RPLPAY00
    *& Author  : Kris Donald
    *& Date    : 15-05-2009
    *& Purpose :
    REPORT  ZRUN_RPLPAY00.
    DATA: LV_JOB_NAME         LIKE TBTCO-JOBNAME,
    LV_JOB_NR           LIKE TBTCO-JOBCOUNT,
    LV_JOB_RELEASED     TYPE C,
    LV_JOB_START_SOFORT TYPE C,
    LV_PRINT_PARAMETERS TYPE PRI_PARAMS.
    LV_JOB_NAME = 'RPLPAY00'.
    CALL FUNCTION 'JOB_OPEN'
        EXPORTING
          JOBNAME          = LV_JOB_NAME
        IMPORTING
          JOBCOUNT         = LV_JOB_NR
        EXCEPTIONS
          CANT_CREATE_JOB  = 1
          INVALID_JOB_DATA = 2
          JOBNAME_MISSING  = 3
          OTHERS           = 4.
      IF SYST-SUBRC = 0.
    *submit job with all the selection screen params...
        SUBMIT (LV_JOB_NAME)
            WITH PNPTIMR1 = ''
            WITH PNPTIMR3 = 'X'
            with PNPBEGDA = ''
            with PNPBEGPS = ''
            with ALV_LIST = 'X'
            USER sy-uname
           VIA JOB LV_JOB_NAME NUMBER LV_JOB_NR AND RETURN.
        IF SY-SUBRC = 0.
          CALL FUNCTION 'JOB_CLOSE'
            EXPORTING
              JOBCOUNT             = LV_JOB_NR
              JOBNAME              = LV_JOB_NAME
              STRTIMMED            = 'X'
            IMPORTING
              JOB_WAS_RELEASED     = LV_JOB_RELEASED
            EXCEPTIONS
              CANT_START_IMMEDIATE = 1
              INVALID_STARTDATE    = 2
              JOBNAME_MISSING      = 3
              JOB_CLOSE_FAILED     = 4
              JOB_NOSTEPS          = 5
              JOB_NOTEX            = 6
              LOCK_FAILED          = 7
              OTHERS               = 8.
          IF SYST-SUBRC <> 0.
            MESSAGE I162(00) WITH
            'An error occured while closing the background job.'.
            STOP.
          ENDIF.
        ENDIF.
      ENDIF.
      SKIP 1.

    However when I check the output log it shows the following message
    'Pay scale grpg for allowances for 00040011 is not defined on 20040728'
    If 'Current year' was selected properly, it would have read as
    'Pay scale grpg for allowances for 00040011 is not defined on 20090101'
    Does anyone know how I can pass the parameters properly to the program in background ?

  • How to submit a program after completion of a background job

    Hi Experts,
    I have a small issue. In my report program i am calling one transaction using call transaction it will trigger a background job. After completion of this background job i need to submit another program, Because the background job updating few values, using this value only the second program functionality will works.
    Currently when i execute my report its calling 1st program and triggering the background job. Once the job started again the program triggering the next program. Here after competion of the background job only this program should submit next program. Anyone kindly suggest some clue.
        CALL TRANSACTION 'ZSAPRCK60' USING    zbdcdata
                                OPTIONS  FROM g_s_options
                                MESSAGES INTO msg_tab.
    SUBMIT SAPRCK10    VIA SELECTION-SCREEN
                        WITH kalaid = p-kalaid
                        WITH kaladat = sy-datum
                        WITH PARALLEL = 'X'
                        WITH SERVNUM = '10'
                        WITH backgr = 'X'
                        AND RETURN.
    Mohana

    Hi,
    There is one function module there which gives you the job status .. if the job is finished then the value will be 'F'.I don't exactly remember the FM but then you can search with BDLSTATUS or BDSTATUS in SE37..
    do.
    call fm BD****STATUS
    IF STATUS (IMPORT PARAMTER) eq 'F'.
    exit.
    endif.
    enddo.
    Regards,
    Nagaraj

  • Program to create Debit and Credit Memos

    Hello everybody!
    I am new to SAP and I need to develop ABAP program to create Debit and Credit Memos...
    1. Debit/Credit memos created with header (Higher level) item and sub item/s
    2. One Debit/Credit memo created per customer
    3. A part of information for memos program will receive through XI (Excel file coming through XI)
    maybe someone can help?
    Helpfull answers will be awarded!
    BR, M.

    You dont need a custom prog to create a debit memo or credit memo.
    You can raise a Credit Memo for a Vendor using the transction code FB65 (without reference to an invoice) or MIRO (if it is with reference to an invoice) and the system would pass the following accounting entry
    Dr. Expenses A/c
    Cr. Vendor A/c
    This particular document would have a payment term and payment due date. While running Automatic Payment Process, depending on the payment method the system will pick up the document and create a cheque / electronic transfer etc for the vendor with the following entry
    Dr. Vendor A/c
    Cr. Bank Clearing A/c
    In the case of Customer you can account the credit memo (without reference to invoice) using FB75 or VA01 (Order Type CR, if it is with reference to an invoice). While you create the billing document for the order type CR the system would raise the following accounting
    Dr. Expenses A/c
    Cr. Customer A/c
    This particular document would have a payment term and payment due date. While running Automatic Payment Process, depending on the payment method the system will pick up the document and create a cheque / electronic transfer etc for the customer with the following entry
    Dr. Customer A/c
    Cr. Bank Clearing A/c

  • How do I create a program with multiple sessions?

    I need to allow multiple sessions with this program.
    I realize that it involves threading of some sort, but I'm pretty new to this area and am not sure how I should go about this.
    Here are the instructions:
    "�     Write an application that will create an online dictionary a data file will be supplied that contains a list of words and their meanings. The hash table will contain a key (the word in question) and a value (byte offset of the word meaning stored in a random access file). You will also provide methods for entering, searching and deleting words online. The program must allow for multiple sessions."
    I have most of this all done, and have a dictionaryBroker ready to write the add, delete and search methods.
    But what about the mutliple sessions?
    I'm thinking that my hashTable and RandomAccessFile classes are both going to have to be singleton.
    What I want is for multiple people to be able to run the program at the same time, but if one person adds or deletes a record, I want it to update instantly for everyone.
    But it also needs to run smoothly for everyone using it.
    Thanks for any help, I just need a little push in the right direction here to help get me going.

    Well here is the entire assignment:
    &#61607;     Write an interface for a hash table that satisfies the following criteria:
    The hash table will contain a key (String) and a value (Object)
    Allow for a specific load capacity, if the capacity is exceeded the table is rehashed. The rehash may be called independently
    Must allow for maintaining the hash table (adding modifying etc) the key will not be changed
    Must allow for retrieving information from the table
    Must allow addition using a Map object or one key, value pair at a time
    The addition using a Map and the rehash must be a two pass approach
    �     Implement the interface.
    �     Write a test routine to test all aspects of the interface. The test must calculate the efficiency of your hashing algorithm.
    �     Write an application that will create an online dictionary a data file will be supplied that contains a list of words and their meanings. The hash table will contain a key (the word in question) and a value (byte offset of the word meaning stored in a random access file). You will also provide methods for entering, searching and deleting words online. The program must allow for multiple sessions.
    Submission
    Submit your eclipse project or executable jar file through WebCT. An efficiency of 70% or better must be attained for the assignment to be graded.
    I'm in Canada, not the US.
    It says online dictionary, but I don't think we actually have to do that. I'm pretty sure I can just use a simple GUI to allow them access to the dictionary.
    So, I'm assuming that I just have to make sure that if multiple people are trying to access it at the same time it needs to update at the same time or something. The hashtable was the main part of the assignment so this part shouldn't be too large.

  • Copy/create program with logical database

    Hi
    I need to create a program with the same selection-screen as SAP standard program RPRAPA00.
    RPRAPA00 is using a logical database, but even that I have passed in the PNP in the attributes of my own progam, I don't get the selection in the top (buttons, key-date info + selection info).
    The rest of my program looks fine.
    Any ideas how I get the missing selections into the selection-screen?

    Hi,
    Define pernr table under tables statement then and use GET PERNR event.This get event is followed by End-Of-Selection.
    Syntax: Tables pernr.
                Get pernr.
    Try, activate and test. This should solve your problem.
    Regards,
    Abhijeet

  • Creating a church anniversary 36-page booklet/program with full bleed.

    I am fairly new to CS4 InDesign but would like to create a 36-page Church Anniversary Booklet/Program with full bleed.  The size of the program should be 8 1/2 x 11.  I probably will need to print it on a larger size and get it cut.  (1) How can I create this type of booklet? (2) What size paper should I use to get the full size of 8 1/2 x 11 (I cannot have white edges around the program).  (3) How should I set up the bleed, slug? (4) Should I use facing pages.  (5) I would like to use the same background on all sheets.  Thanks.

    Shortknocker wrote:
    What does " two-page imposed spreads" mean? 
    If you take two sheets of 8.5x11 paper in a stack, turn them so that the long edge is on top and you fold the left side over the right, it will look like a book in standard reading position. If you write a 1 on the front page, open the book and write 2 on the second, 3 on the third and so on, your last page will be page 8. If you pull the outside sheet and look at the page numbers, you will find page 8 on the left, with page 1 on the right, and on the back you will find page 2 on the left, with page 7 on the right.
    Those pairs of pages (8 & 1, 2 & 7) are two-page spreads (pages that are beside each other), but specifically, they are imposed spreads, also known as printer's spreads. The position of a page within a printer's spread will vary, depending on how many pages there are. For example, a 16 page book will have page 16 to the left of page 1, and page 15 to the right of page 2.
    When you compose the book, page three will be to the right of page 2, in what we call reader's spreads. You will want to compose in reader's spreads, and your print provider will impose the book into printer's spreads. It's important to talk to your printer before you set up the book, so that you will know what is needed.

  • Need help fixing a bug with this program...

    I've been working for hours trying to fix the bug I have with this program...
    http://ss.majinnet.com/AccountManager.java - This is the source code of my program
    http://ss.majinnet.com/Dalzhim.jpg - This is an image used inside the program
    http://ss.majinnet.com/sphereaccu.scp - This is a text file you need to use the program
    First of all, to know what bug I am talking about.. You will need to download those 3 files.. Then you can compile AccountManager.java and run it.. When the program has opened, go into: File -> Open Account File
    and browse until you can open up the text file sphereaccu.scp ... Then there should be a list of names appearing on the left, and when you select any, there will be variables appearing in the TextFields on the right. When that's done, all you have to do to see where the bugs are is to use the options: Edit -> Create New Account as well as Edit -> Remove Account ... When you use the Create New Account option for the first time, it works fine.. But when you use it a second time, errors are appearing on the console (can't find what generates those errors...). And the biggest problem is that when you use the Remove Account option, it doesn't remove the selected account, and over that it generates errors in the console as well...
    If anyone can help me fix those errors, I'd be very grateful !

    won't pretend to understand everything or why you do somethings, but FWIW,
    //package Dalzhim.AccountManager;
    import java.io.*;
    import java.awt.*;
    import java.util.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    public class AccountManager
          JFrame window;
          Container mainPane;
          JSplitPane splitPane;
          JPanel leftPane,rightPane;
          JList accountList;
          JTextField accountName,plevel,priv,password,totaltime,lasttime,lastchar,firstconnect;
          JTextField firstIP,lastconnect,lastIP,lang;
          JLabel label1,label2,label3,label4,label5,label6,label7,label8,label9,label10,label11,label12;
          JMenuBar menuBar;
          JMenu file,edit,end;
          JMenuItem open,save,quit,create,remove,search,ab;
          JFileChooser jfc,jfcs;
          JButton searchButton,createButton;
          JTextField searchString,newName,newPassword,newPLevel;
          JDialog searchWindow,createWindow;
          File accountFile = null;
          File savingFile = null;
          FileInputStream fis;
          StringTokenizer st;
          String content;
          String lastSearch = "";
          String[] strings,lines;
          String[] parameters,arguments;
          Vector accountNames;
          Hashtable plevels,privs,passwords,totaltimes,lasttimes,lastchars,firstconnects;
          Hashtable firstIPs,lastconnects,lastIPs,langs;
          String newline = "";
          int[] activated;
          int lastSelection = -1;
          AL al;
          LL ll;
          public static void main(String args[])
          AccountManager am = new AccountManager();
          public AccountManager()
          al = new AL();
          ll = new LL();
          window = new JFrame("Account Manager");
          mainPane = window.getContentPane();
          leftPane = new JPanel();
          rightPane = new JPanel();
          leftPane.setLayout(new GridLayout(1,1,5,5));
          rightPane.setLayout(null);
          splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPane,rightPane);
          mainPane.setLayout(new GridLayout(1,1,5,5));
          mainPane.add(splitPane);
          menuBar = new JMenuBar();
          file = new JMenu("File");
          edit = new JMenu("Edit");
          end = new JMenu("?");
          menuBar.add(file);
          menuBar.add(edit);
          menuBar.add(end);
          open = new JMenuItem("Open Account File");
          open.addActionListener(al);
          file.add(open);
          save = new JMenuItem("Save Account File");
          save.addActionListener(al);
          file.add(save);
          quit = new JMenuItem("Quit");
          quit.addActionListener(al);
          file.add(quit);
          create = new JMenuItem("Create New Account");
          create.addActionListener(al);
          edit.add(create);
          remove = new JMenuItem("Remove Selected Account");
          remove.addActionListener(al);
          edit.add(remove);
          search = new JMenuItem("Search");
          search.addActionListener(al);
          edit.add(search);
          ab = new JMenuItem("About");
          ab.addActionListener(al);
          end.add(ab);
          window.setJMenuBar(menuBar);
          accountList = new JList();
          accountList.addListSelectionListener(ll);
          leftPane.add(new JScrollPane(accountList));
          accountName = new JTextField(50);
          plevel = new JTextField(50);
          priv = new JTextField(50);
          password = new JTextField(50);
          totaltime = new JTextField(50);
          lasttime = new JTextField(50);
          lastchar = new JTextField(50);
          firstconnect = new JTextField(50);
          firstIP = new JTextField(50);
          lastconnect = new JTextField(50);
          lastIP = new JTextField(50);
          lang = new JTextField(50);
          label1 = new JLabel("Account Name:");
          label2 = new JLabel("Player Level:");
          label3 = new JLabel("Priv Level:");
          label4 = new JLabel("Password:");
          label5 = new JLabel("Total Connected Time:");
          label6 = new JLabel("Last Connected Time:");
          label7 = new JLabel("Last Character Used:");
          label8 = new JLabel("First Connect Data:");
          label9 = new JLabel("First Connected IP:");
          label10 = new JLabel("Last Connected Date:");
          label11 = new JLabel("Last Connected IP:");
          label12 = new JLabel("Language:");
          rightPane.add(accountName);
          rightPane.add(plevel);
          rightPane.add(priv);
          rightPane.add(password);
          rightPane.add(totaltime);
          rightPane.add(lasttime);
          rightPane.add(lastchar);
          rightPane.add(firstconnect);
          rightPane.add(firstIP);
          rightPane.add(lastconnect);
          rightPane.add(lastIP);
          rightPane.add(lang);
          rightPane.add(label1);
          rightPane.add(label2);
          rightPane.add(label3);
          rightPane.add(label4);
          rightPane.add(label5);
          rightPane.add(label6);
          rightPane.add(label7);
          rightPane.add(label8);
          rightPane.add(label9);
          rightPane.add(label10);
          rightPane.add(label11);
          rightPane.add(label12);
          label1.setBounds(10,10,150,25);
          accountName.setBounds(175,10,200,25);
          label2.setBounds(10,40,150,25);
          plevel.setBounds(175,40,200,25);
          label3.setBounds(10,70,150,25);
          priv.setBounds(175,70,200,25);
          label4.setBounds(10,100,150,25);
          password.setBounds(175,100,200,25);
          label5.setBounds(10,130,150,25);
          totaltime.setBounds(175,130,200,25);
          label6.setBounds(10,160,150,25);
          lasttime.setBounds(175,160,200,25);
          label7.setBounds(10,190,150,25);
          lastchar.setBounds(175,190,200,25);
          label8.setBounds(10,220,150,25);
          firstconnect.setBounds(175,220,200,25);
          label9.setBounds(10,250,150,25);
          firstIP.setBounds(175,250,200,25);
          label10.setBounds(10,280,150,25);
          lastconnect.setBounds(175,280,200,25);
          label11.setBounds(10,310,150,25);
          lastIP.setBounds(175,310,200,25);
          label12.setBounds(10,340,150,25);
          lang.setBounds(175,340,200,25);
          Dimension rightdim = new Dimension(380,425);
          rightPane.setMinimumSize(rightdim);
          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          window.pack();
          window.setSize(550,425);
          window.setResizable(false);
          window.setVisible(true);
          public void openAccountFile()
          byte[] b = null;
          try
             fis = new FileInputStream(accountFile);
             b = new byte[fis.available()];
             fis.read(b,0,fis.available());
          catch(FileNotFoundException e)
          catch(IOException e)
          content = new String(b);
          newline = String.valueOf(content.charAt(content.indexOf("\n")));
          parseAccountFile();
          public void parseAccountFile()
          StringTokenizer st = new StringTokenizer(content, "[");
          strings = new String[st.countTokens()];
          createArrays();
          for (int i=0;i<strings.length;i++)
             strings[i] = st.nextToken();
          for(int i=0;i<strings.length;i++)
             parseAccountParameters(i);
          sort();
          public void parseAccountParameters(int which)
          StringTokenizer st = new StringTokenizer(strings[which],"\n");
          lines = new String[st.countTokens()];
          for(int i=0;i<lines.length;i++)
             lines[i] = st.nextToken();
          parameters = new String[lines.length];
          arguments = new String[lines.length];
          accountNames.add(getAccountName(lines[0]));
          for(int i=1;i<lines.length;i++)
             parseAccountParameter(i,which);
          public void parseAccountParameter(int which,int strings)
          StringTokenizer st = new StringTokenizer(lines[which],"=");
          parameters[which] = st.nextToken();
          if(st.hasMoreTokens())
             arguments[which] = st.nextToken();
          stockValues(strings);
          public void stockValues(int a)
          for(int i=0;i<parameters.length;i++)
             if(arguments!=null)
         if(parameters[i].equals("PLEVEL"))
              plevels.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("PRIV"))
              privs.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("PASSWORD"))
              passwords.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("TOTALCONNECTTIME"))
              totaltimes.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("LASTCONNECTTIME"))
              lasttimes.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("LASTCHARUID"))
              lastchars.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("FIRSTCONNECTDATE"))
              firstconnects.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("FIRSTIP"))
              firstIPs.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("LASTCONNECTDATE"))
              lastconnects.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("LASTIP"))
              lastIPs.put(accountNames.get(a),arguments[i]);
         else if(parameters[i].equals("LANG"))
              langs.put(accountNames.get(a),arguments[i]);
    public String getAccountName(String line)
         String name = "";
         for(int i=0;i<line.indexOf("]");i++)
         name = name + (String.valueOf(line.charAt(i)));
         return name;
    public void createArrays()
         accountNames = new Vector();
         plevels = new Hashtable();
         privs = new Hashtable();
         passwords = new Hashtable();
         totaltimes = new Hashtable();
         lasttimes = new Hashtable();
         lastchars = new Hashtable();
         firstconnects = new Hashtable();
         firstIPs = new Hashtable();
         lastconnects = new Hashtable();
         lastIPs = new Hashtable();
         langs = new Hashtable();
    public void showValues()
         if(lastSelection!=-1)
         //keepValues();
         int i = -1 == accountList.getSelectedIndex() ?
         lastSelection :
         accountList.getSelectedIndex();
         accountName.setText((String)accountNames.get( i ));
         plevel.setText((String)plevels.get(accountNames.get( i )));
         priv.setText((String)privs.get(accountNames.get( i )));
         password.setText((String)passwords.get(accountNames.get( i )));
         totaltime.setText((String)totaltimes.get(accountNames.get( i )));
         lasttime.setText((String)lasttimes.get(accountNames.get( i )));
         lastchar.setText((String)lastchars.get(accountNames.get( i )));
         firstconnect.setText((String)firstconnects.get(accountNames.get( i )));
         firstIP.setText((String)firstIPs.get(accountNames.get( i )));
         lastconnect.setText((String)lastconnects.get(accountNames.get( i )));
         lastIP.setText((String)lastIPs.get(accountNames.get( i )));
         lang.setText((String)langs.get(accountNames.get( i )));
         lastSelection = i ;
    public void keepValues()
         accountNames.setElementAt(accountName.getText(),lastSelection);
         plevels.put(accountNames.get(lastSelection),plevel.getText());
         privs.put(accountNames.get(lastSelection),priv.getText());
         passwords.put(accountNames.get(lastSelection),password.getText());
         totaltimes.put(accountNames.get(lastSelection),totaltime.getText());
         lasttimes.put(accountNames.get(lastSelection),lasttime.getText());
         lastchars.put(accountNames.get(lastSelection),lastchar.getText());
         firstconnects.put(accountNames.get(lastSelection),firstconnect.getText());
         firstIPs.put(accountNames.get(lastSelection),firstIP.getText());
         lastconnects.put(accountNames.get(lastSelection),lastconnect.getText());
         lastIPs.put(accountNames.get(lastSelection),lastIP.getText());
         langs.put(accountNames.get(lastSelection),lang.getText());
    public void saveAccountFile()
         keepValues();
         String saving = "";
         for(int i=0;i<strings.length;i++)
         saving = saving + ("["+(String)accountNames.get(i)+"]"+newline);
         if(plevels.get((String)accountNames.get(i))!=null && !(plevels.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("PLEVEL="+plevels.get((String)accountNames.get(i))+newline);
         if(privs.get((String)accountNames.get(i))!=null && !(privs.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("PRIV="+privs.get((String)accountNames.get(i))+newline);
         if(passwords.get((String)accountNames.get(i))!=null && !(passwords.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("PASSWORD="+passwords.get((String)accountNames.get(i))+newline);
         if(totaltimes.get((String)accountNames.get(i))!=null && !(totaltimes.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("TOTALCONNECTTIME="+totaltimes.get((String)accountNames.get(i))+newline);
         if(lasttimes.get((String)accountNames.get(i))!=null && !(lasttimes.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("LASTCONNECTTIME="+lasttimes.get((String)accountNames.get(i))+newline);
         if(lastchars.get((String)accountNames.get(i))!=null && !(lastchars.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("LASTCHARUID="+lastchars.get((String)accountNames.get(i))+newline);
         if(firstconnects.get((String)accountNames.get(i))!=null && !(firstconnects.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("FIRSTCONNECTDATE="+firstconnects.get((String)accountNames.get(i))+newline);
         if(firstIPs.get((String)accountNames.get(i))!=null && !(firstIPs.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("FIRSTIP="+firstIPs.get((String)accountNames.get(i))+newline);
         if(lastconnects.get((String)accountNames.get(i))!=null && !(lastconnects.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("LASTCONNECTDATE="+lastconnects.get((String)accountNames.get(i))+newline);
         if(lastIPs.get((String)accountNames.get(i))!=null && !(lastIPs.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("LASTIP="+lastIPs.get((String)accountNames.get(i))+newline);
         if(langs.get((String)accountNames.get(i))!=null && !(langs.get((String)accountNames.get(i)).equals("")))
         saving = saving + ("LANG="+langs.get((String)accountNames.get(i))+newline);
         saving = saving + newline;
         try
         FileOutputStream fos = new FileOutputStream(savingFile);
         fos.write(saving.getBytes());
         catch(FileNotFoundException e)
         catch(IOException e)
    public void about()
         final JDialog info = new JDialog(window,"About",true);
         Container aboutPane = info.getContentPane();
         aboutPane.setLayout(null);
         Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("Dalzhim.jpg"));
         ImageIcon sig = new ImageIcon(image);
         JLabel sign = new JLabel(sig);
         JLabel text1 = new JLabel("AccountManager v0.2Beta");
         JEditorPane text2 = new JEditorPane();
         JEditorPane text3 = new JEditorPane();
         JEditorPane text4 = new JEditorPane();
         JButton close = new JButton("Okay");
         JEditorPane jep = new JEditorPane();
         sign.setBounds(10,0,374,292);
         text1.setBounds(125,300,250,20);
         text2.setBounds(10,350,400,20);
         text3.setBounds(10,400,400,20);
         text4.setBounds(10,450,400,20);
         close.setBounds(150,500,100,20);
         close.addActionListener(new ActionListener()
              public void actionPerformed(ActionEvent e)
              info.setVisible(false);
         text2.setText("Created by �alzhim");
         text3.setText("Dalzhim, also known as, Amlaruil");
         text4.setText("[email protected] - [email protected]");
         text2.setEditable(false);
         text3.setEditable(false);
         text4.setEditable(false);
         text2.setBackground(new Color(207,207,207));
         text3.setBackground(new Color(207,207,207));
         text4.setBackground(new Color(207,207,207));
         aboutPane.add(sign);
         aboutPane.add(text1);
         aboutPane.add(text2);
         aboutPane.add(text3);
         aboutPane.add(text4);
         aboutPane.add(close);
         jep.setBackground(new Color(207,207,207));
         jep.setEditable(false);
         jep.setText("TEST");
         info.pack();
         info.setSize(400,550);
         info.setResizable(false);
         info.setVisible(true);
    public void search()
         searchWindow = new JDialog(window,"Search");
         Container searchPane = searchWindow.getContentPane();
         searchPane.setLayout(null);
         searchString = new JTextField(lastSearch);
         searchButton = new JButton("Search");
         searchString.addActionListener(al);
         searchButton.addActionListener(al);
         searchPane.add(searchString);
         searchPane.add(searchButton);
         searchString.setBounds(10,10,175,25);
         searchButton.setBounds(200,10,100,25);
         searchString.selectAll();
         searchWindow.pack();
         searchWindow.setSize(320,65);
         searchWindow.setResizable(false);
         searchWindow.setVisible(true);
    public void search(String what)
         accountList.setSelectedValue(what,true);
    public void createAccount()
         createWindow = new JDialog(window,"Create New Account");
         Container createPane = createWindow.getContentPane();
         createPane.setLayout(null);
         newName = new JTextField();
         newPassword = new JTextField();
         newPLevel = new JTextField();
         createButton = new JButton("Create Account");
         JLabel createlabel1 = new JLabel("Account Name:");
         JLabel createlabel2 = new JLabel("Account Password:");
         JLabel createlabel3 = new JLabel("Account PLevel:");
         createPane.add(newName);
         createPane.add(newPassword);
         createPane.add(newPLevel);
         createPane.add(createButton);
         createPane.add(createlabel1);
         createPane.add(createlabel2);
         createPane.add(createlabel3);
         newName.addActionListener(al);
         newPassword.addActionListener(al);
         newPLevel.addActionListener(al);
         createButton.addActionListener(al);
         newName.setBounds(160,10,200,25);
         newPassword.setBounds(160,45,200,25);
         newPLevel.setBounds(160,80,200,25);
         createButton.setBounds(160,115,200,25);
         createlabel1.setBounds(10,10,150,25);
         createlabel2.setBounds(10,45,150,25);
         createlabel3.setBounds(10,80,150,25);
         createWindow.pack();
         createWindow.setSize(375,175);
         createWindow.setResizable(false);
         createWindow.setVisible(true);
    public void createProcess()
         String tempname = newName.getText();
         String temppass = newPassword.getText();
         String templeve = newPLevel.getText();
         createWindow.dispose();
         if(!(accountNames.contains(tempname)))
         accountNames.add(tempname);
         sort();
         passwords.put(tempname,temppass);
         plevels.put(tempname,templeve);
         search(newName.getText());
    public void sort()
         Object[] sorting = new Object[accountNames.size()];
         accountNames.toArray(sorting);
         String[] sorting2 = new String[sorting.length];
         for(int i=0;i<sorting.length;i++)
         sorting2[i] = (String)sorting[i];
         Arrays.sort(sorting2,String.CASE_INSENSITIVE_ORDER);
         accountNames.clear();
         for(int i=0;i<sorting2.length;i++)
         accountNames.add(sorting2[i]);
         accountList.setListData(accountNames);
    public void removeAccount()
         if(accountList.getSelectedIndex()==-1)
         JOptionPane.showMessageDialog(window,"You must select an account from the list to use the Remove option");
         else
         int i = accountList.getSelectedIndex();
         System.out.println( "ra: " + i + " an: " + accountNames.elementAt( i ) );
         System.out.println(accountNames.elementAt( i ));
         plevels.remove(accountNames.elementAt( i ));
         privs.remove(accountNames.elementAt( i ));
         passwords.remove(accountNames.elementAt( i ));
         totaltimes.remove(accountNames.elementAt( i ));
         lasttimes.remove(accountNames.elementAt( i ));
         lastchars.remove(accountNames.elementAt( i ));
         firstconnects.remove(accountNames.elementAt( i ));
         firstIPs.remove(accountNames.elementAt( i ));
         lastconnects.remove(accountNames.elementAt( i ));
         lastIPs.remove(accountNames.elementAt( i ));
         langs.remove(accountNames.elementAt( i ));
         accountNames.removeElementAt( i );
         accountList.setListData( accountNames );
         //sort();
         showValues();
    class AL implements ActionListener
         public void actionPerformed(ActionEvent e)
         if(e.getSource()==open)
              jfc = new JFileChooser(accountFile);
              jfc.setDialogTitle("Select your account file");
              jfc.setMultiSelectionEnabled(false);
              jfc.addActionListener(al);
              jfc.showOpenDialog(window);
         else if(e.getSource()==jfc)
              accountFile = jfc.getSelectedFile();
              openAccountFile();
         else if(e.getSource()==save)
              jfcs = new JFileChooser(savingFile);
              jfcs.setDialogTitle("Where do you wish to save?");
              jfcs.setMultiSelectionEnabled(false);
              jfcs.addActionListener(al);
              jfcs.showSaveDialog(window);
         else if(e.getSource()==ab)
              about();
         else if(e.getSource()==jfcs)
              savingFile = jfcs.getSelectedFile();
              saveAccountFile();
         else if(e.getSource()==quit)
              System.exit(-1);
         else if(e.getSource()==search)
              search();
         else if(e.getSource()==searchString)
              searchButton.doClick();
         else if(e.getSource()==searchButton)
              accountList.setSelectedValue(searchString.getText(),true);
              lastSearch = searchString.getText();
              searchWindow.dispose();
         else if(e.getSource()==create)
              createAccount();
         else if(e.getSource()==newName)
              newPassword.requestFocus();
              newPassword.selectAll();
         else if(e.getSource()==newPassword)
              newPLevel.requestFocus();
              newPLevel.selectAll();
         else if(e.getSource()==newPLevel)
              createButton.doClick();
         else if(e.getSource()==createButton)
              if(newName.getText().equals("") || newPassword.getText().equals("") || newPLevel.getText().equals(""))
              createWindow.dispose();
              JOptionPane.showMessageDialog(window,"You have to enter an account name, a password and a plevel");
              else
              createProcess();
         else if(e.getSource()==remove)
              removeAccount();
    class LL implements ListSelectionListener
         public void valueChanged(ListSelectionEvent e)
         showValues();

  • Need an example of server / client program with swing interface

    Hi!
    After a lot of trying i still haven't managed to create a server client program using swing components ...
    can someone write a mini application to demonstrate how this can be done?
    i would like to have a frame with a button a texField for input and a textAread for the output
    What i have in mind is the following ..
    say im the server
    i write something in the textField and then i press the button
    then the information written in the textFiled is passed to the client who shows it in his textArea
    The same thing goes on with the client (he can write something in his own textField and when he presses the button the info is passed at the
    server who puts it in his textArea) and vice versa.
    i have written many classes that trying unsuccessfully to do that ... below i show my last attempt ...
    I would appreciate if you could write a small application which it could to this.
    The whole idea is to create a turn based game ( i have implemented the game engine and graphics and i try to add the internet function)
    Here is the code ...( i would appreciate if you write a new code instead of trying to correct mine ( which i think it's impossible) in order to use it as a general example)
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    @SuppressWarnings("serial")
    *  In order to have a more gereral program instead of passing strings between the server
    *  and the client a pass an MyObjext object.  The MyObject class has an integer and a String
    *  (which is always the same) field . At the textField i write an integer number and i
    *  make a new MyObject which i want to pass to the server or the client and vice versa.
    *  The textArea shows the integer value of the MyObject which was passed from the server /client
    public class MyUserInterface extends JFrame {
         MyObject returnObject;
         JTextField myTextField;
         JTextArea te ;
         ClientGame cg;
         ServerGame sg;
          * used to determine if the current instance is running as a client or host
         boolean isHost;
         //The constructor of the client
         public MyUserInterface(ClientGame cg){
              this("Client");
              this.cg = cg;
              isHost = false;
         //The constructor of the server
         public MyUserInterface(ServerGame sg){
              this("Server");
              this.sg = sg;
              isHost = true;
         //The general constructor used both by client and server ..
         // it initializes the GUi components and add an actionListenr to the button
         public MyUserInterface(String str) {
              super(str);
              myTextField = new JTextField(2);
              te = new JTextArea();
              te.setPreferredSize(new Dimension(100,100));
              JButton okButton = new JButton("Ok");
              okButton.addActionListener(new ActionListener() {
                   @Override
                   public void actionPerformed(ActionEvent e) {
                        try{
                             int a = Integer.parseInt(MyUserInterface.this.myTextField.getText());
                             System.out.println(a);   //used to control the flow of the program
                                  MyUserInterface.this.returnObject = new MyObject(a);
                             //sends the data
                             sendData();
                             //waiting for response...
                             getData();
                             catch(Exception ex){System.out.println("Error in the UI action command" +
                                                                ex.printStackTrace();}
              JPanel panel =  new JPanel(new FlowLayout());
              panel.add(okButton);
              panel.add(myTextField);
              panel.add(te);
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              getContentPane().add(panel);
              pack();
              setVisible(true);
         protected MyObject getReturnObject() {
              return returnObject;
         public void sendData(){
              new Thread(new Runnable() {
                   @Override
                   public void run() { 
                        if (!isHost)cg.sentData(returnObject);    //using the Servers out and in methods
                        else sg.sentData(returnObject);                    //using the Clients out and in methods
                        System.out.println("data sending");
         public MyObject getData(){
              MyObject obj;
              System.out.println("Retrieveing Data");
              if (!isHost)obj = (MyObject)cg.getData();
              else obj = (MyObject)sg.getData();
              System.out.println(" data retrieved  = "+ obj.getInt());  //just to control how the code flows
              te.setText(obj.getInt()+"");       
              return obj;
         public static void main(String[] args) {
              *Initiating the Server
              new Thread(new Runnable() {
                   @Override
                   public void run() {
                        ServerGame sg = new ServerGame();
                        new MyUserInterface(sg);
              }).start();     
               * Initiating the Client
              new Thread(new Runnable() {
                   @Override
                   public void run() {
                        ClientGame cg = new ClientGame("192.168.178.21");   //<----in case you run my code
                                                                          //..don't forget to change to your
                        new MyUserInterface(cg);                              //ip
              }).start();
    import java.io.*;
    import java.net.*;
    public class ClientGame {
         String ipAddress;
         Socket clientSocket = null;
        ObjectOutputStream out = null;
        ObjectInputStream in = null;
         public ClientGame(String ipAddress) {
              this.ipAddress = ipAddress;
              try {
                   System.out.println("Connecting To Host");
                 clientSocket = new Socket(InetAddress.getByName(ipAddress),4444);
                System.out.println("Host Found ...Io initializaton");
                out = new ObjectOutputStream(clientSocket.getOutputStream());
                in = new ObjectInputStream(clientSocket.getInputStream());
            } catch (UnknownHostException e) {
                System.err.println("Don't know about host: taranis.");
                System.exit(1);
            } catch (IOException e) {
                System.err.println("Couldn't get I/O for the connection to: taranis.");
                System.exit(1);
         public Object getData(){
              Object fromServer = null ;
              do{
                 try {
                      fromServer = in.readObject();
                 catch(ClassNotFoundException ex){}
                  catch(IOException e){}
              }while(fromServer==null);
              return fromServer;        
         public void sentData(final Object obj){
              new Thread(new Runnable() {
                   @Override
                   public void run() {
                        try{
                             out.writeObject(obj);
                        catch(IOException e){}
              }).start();
         public void terminateConnection(){
              try{
                   out.close();
                   in.close();
                   clientSocket.close();
              catch (IOException e){}
    public class ServerGame {
         ServerSocket serverSocket;
         Socket clientSocket;
         ObjectOutputStream out = null;
        ObjectInputStream in = null;
         public ServerGame() {
              try{
                   serverSocket = new ServerSocket(4444);
                   clientSocket = serverSocket.accept();
                   out =  new ObjectOutputStream(clientSocket.getOutputStream());
                in = new ObjectInputStream(clientSocket.getInputStream());
              catch(IOException e){System.out.println("IOException in ServerGame");}
         public Object getData(){
              Object fromClient = null ;
              do{
                 try {
                      fromClient = in.readObject();
                 catch(ClassNotFoundException ex){}
                  catch(IOException e){}
              }while(fromClient==null);
             return fromClient;        
         public void sentData(final Object obj){
              new Thread(new Runnable() {
                   @Override
                   public void run() {
                        try{
                   out.writeObject(obj);
              catch(IOException e){}
              }).start();
         public void terminateConnection(){
              try{
                   out.close();
                   in.close();
                   clientSocket.close();
                   serverSocket.close();
              catch (IOException e){}
         public static void main(String[] args) {
              new ServerGame();
    import java.io.Serializable;
    * this is a test object
    * it has a String field and a value
    *  The string is always the same but the integer value is defined in the constructor
    public class MyObject implements Serializable{
         private static final long serialVersionUID = 1L;
         String str;
         int myInt;
         MyObject(int a){
              str = "A String";
              myInt = a;
         public int getInt(){
              return myInt;
    }

    Pitelk wrote:
    I believe that a good code example can teach you things ;that you would need many days of searching; in no timeSo lets write one small example.. Ill help a little, but you do most of the work.
    jverd approach is deffenetly the way to go.
    jverd wrote:
    * Write a very small, simple Swing program with an input area, an output area, and a button. When you click the button, what's in the input area gets copied over to the output area.This part is partially done.
    * Write a very small, simple client/server program without Swing. It should just send a couple of hardcoded messages back and forth.And this part is for you(Pitelk) to continue on. I cannot say that this is the best way. or that its good in any way. I do however like to write my client/server programs like this. And perhaps, and hopefully, Ill learn something new from this as well.
    This is how far I got in about 10-20min..
    package client;
    * To be added;
    * A connect method. That connects the client to the server and
    * opens up both the receive and transmit streams. After doing that
    * the an instance of the ServerListener class should be made.
    * Also an disconnect method could be usable. But thats a later part.
    public class TestClass1 {
    package utils;
    import java.io.ObjectInputStream;
    import client.TestClass1;
    * This class is meant to be listening to all responses given from
    * the server to the client. After a have received data from the
    * server. It should be forwarded to the client, in this case
    * TestClass1.
    public class ServerListener implements Runnable {
         public ServerListener(ObjectInputStream in, TestClass1 tc) {
         @Override
         public void run() {
              while(true) {
    package server;
    import java.io.ObjectOutputStream;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;
    * This class should handle all data sent to the server from the clients.
    class Server implements Runnable {
         private static List<ObjectOutputStream> outStreams = new ArrayList<ObjectOutputStream>();
         private Socket client = null;
         public Server(Socket client) {
              this.client = client;
         @Override
         public void run() {
              while(true) {
    * The meaning of this class is to listen for clients trying to connect
    * to the server. Once connection is achieved a new thread for that client
    * should be made to listen for data sent by the client to the server.
    public class ChatServer implements Runnable {
         @Override
         public void run() {
              while(true) {
    package utils;
    import java.io.Serializable;
    @SuppressWarnings("serial")
    public class MyObject implements Serializable {
         private String mssg;
         private String clientID;
         private String clientName;
         public MyObject(String mssg, String clientID, String clientName) {
              this.mssg = mssg;
              this.clientID = clientID;
              this.clientName = clientName;
         //Generate getters and setters..
    }Continue on this, and when you get into problems etc post them. Also show with a small regular basis how far you have gotten with each class or it might be seen as you have lost intresst and then this thread is dead.
    EDIT: I should probably also say that Im not more than a java novice, at the verry most. So I cannot guarantee that I alone will be able to solve all the problems that might occure during this. But Im gonna try and help with the future problems that may(most likely will) occure atleast(Trying to reserve my self incase of misserable failiure from me in this attempt).
    Edited by: prigas on Jul 7, 2008 1:47 AM

Maybe you are looking for

  • MOD_OC4J error messages in Apache log

    Hi, We're seeing a lot of MOD_OC4J error messages in our Apache error log namely MOD_OC4J_0013, 35, 58, 80, 121, 119, 150, 0207 which appear to indicate a failure of communication from the ohs to the oc4j services. Are these errors documented and wha

  • Need to add my program to excute when windows welcome

    Hello everybody! I need to add my program to excute when windows startup. I want my program run same Windows Update when startup. I need windows welcome wait my program end and next to login user Thank everybody

  • Code help

    I need the code that basically says "if mySound is playing", thanx

  • Elements 13 question

    Hi there! I have been using Photoshop Elements 7 for years and just upgraded to Elements 13. With 7 under the create tab you have colleges and there are many templates. With 13 when I got to create a collage I only have one template option. How do I

  • Files/clips import sequence not according to date/time

    When I import files/clips the sequence of is all muddled-up it looks the last files/clips according to the date/time are positioned first and first files last - why would this be and how can I resolve the problem?