GUI for chat program

Hi everyone,
I'm writing a simple chat program as a assignment at my Uni. I get stucked with the client GUI. I want to create a GUI like that of Yahoo messenger which has a list of connected users displayed on the GUI. When u double click on the name of the user, u will get connected to that user. I have no idea about creating a GUI list like this one. Can anybody help me with this? Thanks in advance!

There are many tutorials on this site; check the "tutorials" link on the column on the left.
Here are ones about GUIs:
http://developer.java.sun.com/developer/onlineTraining/GUI/
I'd suggest skipping over any tutorials prior to JDK 1.1 or even 1.2.
Read more recent ones. There have been significant improvements, especially w.r.t. event handling, between 1.0 and 1.1.

Similar Messages

  • Somewhat new to Java -- Given the task to create a GUI for a test.

    Hello there, I am a freshman student, in a Java class; the semester is coming to an end. In our project, we were assigned three parts to complete a program, that basically hands out a test. [I believe someone else has asked questions about a similar problem before, but not towards my situation.]
    The topic I chose to work with was the GUI for the program,and I'm already hitting snags. The issue is..well, probably the fact I get sort of lost when it comes to calling other methods, or just stupid mistakes to begin with. Some of the options we're faced with that we can put into the program are, for example, creating back/next buttons so the user can scroll through given questions, a progress meter [which I have no idea how to go about], Add an answer sheet in a separate window, and some others, but if possible, I will get to those when the time is right.
    Also, a small note about the majority of the code; Most of it is from a mold that was given to us as an example in class, and the 'setUp' method came from another class. [QuizDriver] As of now, the code remains untouched, but the if loops that remain empty or rather messed up is my fault, as I hit a snag and..to be honest, I am quite lost.
    As of now, my code for the GUI is this.
    import javax.swing.*;     
    import java.awt.*;     
    import java.awt.event.*;
    public class ProjGUI implements ActionListener {     
         // class constants      
         private static final int WINDOW_WIDTH = 700; 
         private static final int WINDOW_HEIGHT = 200; 
         private static final int TEXT_WIDTH = 50;   
         private static final FlowLayout LAYOUT_STYLE =     
              new FlowLayout();          
         static Test exam = new Test("Sample Exam", "Select the correct answer for each question");
         private JFrame window = new JFrame("Project GUI: Test");     
         private JTextArea results = new JTextArea("");
         int counter;
         private JLabel QTag = new JLabel("The Current Question:");     
         private JTextField QText = new JTextField(exam.displayQuestion(0));     
         private JLabel AnsTag = new JLabel("Your Answer:");
         private JTextField AnsText = new JTextField(TEXT_WIDTH);     
         private JButton SubButton = new JButton("Submit");     
         private JButton backButton = new JButton("Back");
         private JButton advButton = new JButton("Next");
         private JButton clearButton = new JButton("Reset Answer Choice");
         // constructor      
         public ProjGUI()
              // configure GUI      
              window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);     
              window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     
              QText.setEditable(false);     
              QText.setBackground(Color.WHITE);     
              // register event listener      
              SubButton.addActionListener(this);     
              clearButton.addActionListener(this);
              backButton.addActionListener(this);
              advButton.addActionListener(this);
              // arrange components in GUI      
              window.getContentPane().setLayout(LAYOUT_STYLE);     
              window.getContentPane().add(QTag);     
              window.getContentPane().add(QText);     
              window.getContentPane().add(AnsTag);     
              window.getContentPane().add(AnsText);     
              window.getContentPane().add(SubButton);     
              window.getContentPane().add(backButton);
              window.getContentPane().add(clearButton);
              window.getContentPane().add(advButton);
              // display GUI      
              window.setVisible(true);     
         // actionPerformed(): run button action event handler
         public void actionPerformed(ActionEvent e) {     
              if (e.getActionCommand().equals("Submit"))
                   if(QText.equals(""))
                        QText = null;
                   if(e.getActionCommand().equals("Back"))
                        // Code for going back through the questions.
                   if(e.getActionCommand().equals("Next"))
                        // Code for advancing through the test
              // exam.answer(counter, ans);
              QText.setText(exam.displayQuestion(0+1));
              if (counter == exam.length())
                 exam.scoreExam(true);
                 results.setText("Your final score was " + exam.getScore() + "/" + exam.getMaxScore() + " points.");
                 results.setVisible(true);
              counter++;
         // main(): application entry point     
         public static void main(String[] args)
              setUp(exam);
              ProjGUI gui = new ProjGUI();     
         private static void setUp (Test t)
              TrueFalseQuestion x = new TrueFalseQuestion("The sky is blue.", "true", 2);
              t.addQuestion(x);
              x = new TrueFalseQuestion("The first FORTRAN compiler debuted in 1957", "true", 5);
              t.addQuestion(x);
              MultipleChoiceQuestion m = new MultipleChoiceQuestion("Which of the following is NOT a disk-scheduling algorithm?", "b", 4);
              m.addAnswerChoice("SSTF");
              m.addAnswerChoice("SJF");
              m.addAnswerChoice("FCFS");
              m.addAnswerChoice("All of the above are disk-scheduling algorithms");
              t.addQuestion(m);
               x = new TrueFalseQuestion("Spock was a Vulcan", "false", 3);
              t.addQuestion(x);
    }Feel free to tear it apart, as I am doing trying to figure out how exactly the buttons should work. Any feedback is appreciated.
    Edited by: Ereki on May 15, 2008 11:03 PM
    Edited by: Ereki on May 15, 2008 11:07 PM

    You may find java.awt.CardLayout and javax.swing.JProgressBar helpful.
    Generally if you have Swing-specific questions, you should ask on the Swing forum.

  • What is the best Videoing Chatting program to use for my Macbook Pro?

    I have had Skype for a while now and recently I updated to Skype 5, and the call qaulity is absolutely miserable, it keeps being blurry and freezing and it's a pain to try and talk through. So I was wondering is there any changes or fixes I can do to possibly make it better or improve the quality of my calls? If not is there any other good video chatting programs with good call qualities for Mac?
    Im using Skype on my macbook pro, just saying.

    How can you check if your wifi is good enough for a quality video call?
    Yes I would post on Skypes forum, but there people their are not very helpful or supportive, so Im trying to get other people's opnions on ways to improve the call quality or find a better program.
    Does anyone use any other video calling program that is just as good if not better? If so could you please mention it. I've looked on Google and I know some of the softwares or programs out there, but Id like to get peoples first hand experience with the programs and what they think of some of them out there.

  • Creating a Java GUI for a C/C++ program

    I'm tasked with creating a GUI for a multi-threaded C++ network server program that has it's main function running with a while loop that checks for keystrokes from the user. The C++ code for the loop is basically:
    while(i!='q')
    if(kbhit())
    i=getch();
    processkey(i);
    }And the processkey function performs different actions based on the key that was pressed.
    I was reading up on ways to interface between Java and C/C++ and heard of JNI, but I also found someone who suggested using the Java Robot class to send the keystrokes from my GUI to the C++ program.
    I've been trying to make a small test case application using the Robot class before trying to implement it in my larger project.
    I created a program with a JFrame with two buttons, one starts a simple C++ program that loops, waiting for keypresses and which will close when 'q' is pressed, like my main program.
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            try {
                Runtime.getRuntime().exec("C:/Users/Administrator1/Desktop/Untitled2.exe");
                // TODO add your handling code here:
            } catch (IOException ex) {
                Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            // TODO add your handling code here:
        }The other button creates a Robot instance and tells that robot to send a key press of 'q', which should terminate the C++ program.
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
            try {
                Robot robot = new Robot();
                // Creates the delay of 5 sec so that you can open notepad before
                // Robot start writting
                //robot.delay(5000);
                robot.keyPress(KeyEvent.VK_Q);
            } catch (AWTException e) {
                e.printStackTrace();
        }It isn't working though. Could it be because when the program is started from my Java app, it runs in the background rather than opening in a new command prompt window? Or is Robot not the way to go, and if so, are there any examples and/or tutorials online that could help me?

    When you clicked the button, what application do you think has the focus at that point? So what do you think consumes the keystroke that you emulated? Hint: It wouldn't be the application you intended it to go to.

  • Recommendations for a simple, fast GUI LAN chat application? [Solved]

    We now have 4 ArchLinux machines scattered throughout the house. (My wife is an Archer now!). I am looking for a simple fast GUI LAN chat application. I looked at "qchat" but it is a bit cumbersome and doesn't have the option of a small applet to the panel. Any recommendations appreciated...
    Larry
    Last edited by lagagnon (2010-02-13 21:27:00)

    jwwolf wrote:Found this in AUR
    griv
    I just tried it with a few machines and it works fine.
    Excellent choice! Nice, light and unobtrusive. Works well, thanks for the recommendation.

  • What is the best free video chat program is for my mac osx

    I'm new to mac and need to find the best free video chat program.

    You might want to take a look at Skype.  "Best" chat I think is in the eye of the beholder in these cases.

  • Voice chat program

    After a few days work, I have completed the mian voice chat program. I know there are so many people like me that wants that. I post these program. i will complete gui work later. and there is a problem in the program. if the speaking one do not speak for a while, the listening client will hear noise. Can some one help me.
    package com.longshine.voice;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class Server
    // The ServerSocket we'll use for accepting new connections
    private ServerSocket ss;
    // A mapping from sockets to DataOutputStreams. This will
    // help us avoid having to create a DataOutputStream each time
    // we want to write to a stream.
    private Hashtable outputStreams = new Hashtable();
    final int bufSize = 16384;
    //current speak_man
    private int speakman=-1;
    // Constructor and while-accept loop all in one.
    public Server( int port ) throws IOException {
    // All we have to do is listen
    listen( port );
    private void listen( int port ) throws IOException {
    // Create the ServerSocket
    ss = new ServerSocket( port );
    // Tell the world we're ready to go
    System.out.println( "Listening on "+ss );
    // Keep accepting connections forever
    while (true) {
    // Grab the next incoming connection
    Socket s = ss.accept();
    // Tell the world we've got it
    System.out.println( "Connection from "+s );
    // Create a DataOutputStream for writing data to the
    // other side
    DataOutputStream dout = new DataOutputStream( s.getOutputStream() );
    // Save this stream so we don't need to make it again
    outputStreams.put( s, dout );
    // Create a new thread for this connection, and then forget
    // about it
    new VoiceServer( this, s );
    // Get an enumeration of all the OutputStreams, one for each client
    // connected to us
    Enumeration getOutputStreams() {
    return outputStreams.elements();
    // Send a message to all clients (utility routine)
    void sendToAll( byte[] voice ,Socket socket) {
    // We synchronize on this because another thread might be
    // calling removeConnection() and this would screw us up
    // as we tried to walk through the list
    synchronized( outputStreams ) {
    // For each client ...
    for (Enumeration e = outputStreams.keys(); e.hasMoreElements(); ) {
    // ... get the output stream ...
    Socket tmp=(Socket)e.nextElement();
    if(!tmp.equals(socket))
    try {
    DataOutputStream dout = new DataOutputStream(tmp.getOutputStream());
    // ... and send the message
    dout.write(voice,0,44096);
    dout.flush();
    } catch( IOException ie ) { System.out.println( ie ); }
    // Remove a socket, and it's corresponding output stream, from our
    // list. This is usually called by a connection thread that has
    // discovered that the connectin to the client is dead.
    void removeConnection( Socket s ) {
    // Synchronize so we don't mess up sendToAll() while it walks
    // down the list of all output streamsa
    synchronized( outputStreams ) {
    // Tell the world
    System.out.println( "Removing connection to "+s );
    // Remove it from our hashtable/list
    outputStreams.remove( s );
    // Make sure it's closed
    try {
    s.close();
    } catch( IOException ie ) {
    System.out.println( "Error closing "+s );
    ie.printStackTrace();
    // Main routine
    // Usage: java Server <port>
    static public void main( String args[] ) throws Exception {
    // Get the port # from the command line
    int port = Integer.parseInt( args[0] );
    // Create a Server object, which will automatically begin
    // accepting connections.
    new Server( port );
    package com.longshine.voice;
    import java.net.*;
    import java.io.*;
    import java.sql.*;
    import java.io.*;
    import java.net.*;
    public class VoiceServer extends Thread
    // The Server that spawned us
    private Server server;
    final int bufSize = 16384;
    // The Socket connected to our client
    private Socket socket;
    // Constructor.
    public VoiceServer( Server server, Socket socket ) {
    // Save the parameters
    this.server = server;
    this.socket = socket;
    // Start up the thread
    start();
    // This runs in a separate thread when start() is called in the
    // constructor.
    public void run() {
    try {
    // Create a DataInputStream for communication; the client
    // is using a DataOutputStream to write to us
    DataInputStream din = new DataInputStream( socket.getInputStream() );
    byte[] voice=new byte[44096];
    // Over and over, forever ...
    while (true) {
    // ... read the next message ...
    // int bytes = din.read(voice,0,44096);
    int bytes = din.read(voice);
    // ... and have the server send it to all clients
    server.sendToAll(voice,socket);
    } catch( EOFException ie ) {
    // This doesn't need an error message
    } catch( IOException ie ) {
    // This does; tell the world!
    ie.printStackTrace();
    } finally {
    // The connection is closed for one reason or another,
    // so have the server dealing with it
    server.removeConnection( socket );
    package com.longshine.voice;
    import java.io.*;
    import java.net.*;
    public class Client {
    private String host="";
    private String port="";
    private Socket socket;
    private DataOutputStream dout;
    private DataInputStream din;
    private Capture capture=null;
    private Play play=null;
    public Client(String host,String port) {
    this.host=host;
    this.port=port;
    public void init()
    try
    socket = new Socket( host, Integer.parseInt(port));
    din = new DataInputStream( socket.getInputStream() );
    dout = new DataOutputStream( socket.getOutputStream());
    capture=new Capture(dout);
    play=new Play(din);
    catch(Exception e)
    e.printStackTrace();
    public static void main(String[] args) {
    Client client = new Client("172.18.220.176","5678");
    client.init();
    if(args[0].equalsIgnoreCase("say"))
    client.capture.start();
    if(args[0].equalsIgnoreCase("hear"))
    client.play.start();
    package com.longshine.voice;
    import java.io.*;
    import java.util.Vector;
    import java.util.Enumeration;
    import javax.sound.sampled.*;
    import java.text.*;
    import java.net.*;
    public class Play implements Runnable {
    SourceDataLine line;
    Thread thread;
    String errStr=null;
    DataInputStream in=null;
    AudioInputStream audioInputStream;
    final int bufSize = 16384;
    int duration=0;
    public Play(DataInputStream in)
    this.in=in;
    public void start() {
    errStr = null;
    thread = new Thread(this);
    thread.setName("Playback");
    thread.start();
    public void stop() {
    thread = null;
    private void shutDown(String message) {
    if ((errStr = message) != null) {
    System.err.println(errStr);
    if (thread != null) {
    thread = null;
    public void createAudioInputStream() {
    if (in != null ) {
    try {
    errStr = null;
    java.io.BufferedInputStream oin = new java.io.BufferedInputStream(in);
    audioInputStream = AudioSystem.getAudioInputStream(oin);
    } catch (Exception ex) {
    ex.printStackTrace();
    } else {
    public void run() {
    // reload the file if loaded by file
    if (in != null) {
    // createAudioInputStream();
    // make sure we have something to play
    // if (audioInputStream == null) {
    // shutDown("No loaded audio to play back");
    // return;
    // reset to the beginnning of the stream
    // try {
    // audioInputStream.reset();
    // } catch (Exception e) {
    // shutDown("Unable to reset the stream\n" + e);
    // return;
    // get an AudioInputStream of the desired format for playback
    AudioFormat format = getFormat();
    audioInputStream=new AudioInputStream(in, format, AudioSystem.NOT_SPECIFIED);
    AudioInputStream playbackInputStream = AudioSystem.getAudioInputStream(format, audioInputStream);
    if (playbackInputStream == null) {
    shutDown("Unable to convert stream of format " + audioInputStream + " to format " + format);
    return;
    // define the required attributes for our line,
    // and make sure a compatible line is supported.
    DataLine.Info info = new DataLine.Info(SourceDataLine.class,
    format);
    if (!AudioSystem.isLineSupported(info)) {
    shutDown("Line matching " + info + " not supported.");
    return;
    // get and open the source data line for playback.
    try {
    line = (SourceDataLine) AudioSystem.getLine(info);
    line.open(format, bufSize);
    } catch (LineUnavailableException ex) {
    shutDown("Unable to open the line: " + ex);
    return;
    // play back the captured audio data
    int frameSizeInBytes = format.getFrameSize();
    int bufferLengthInFrames = line.getBufferSize() / 8;
    int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
    byte[] data = new byte[bufferLengthInBytes];
    int numBytesRead = 0;
    // start the source data line
    line.start();
    while (thread != null) {
    try {
    if ((numBytesRead = playbackInputStream.read(data)) == -1) {
    break;
    int numBytesRemaining = numBytesRead;
    while (numBytesRemaining > 0 ) {
    numBytesRemaining -= line.write(data, 0, numBytesRemaining);
    } catch (Exception e) {
    shutDown("Error during playback: " + e);
    break;
    // we reached the end of the stream. let the data play out, then
    // stop and close the line.
    if (thread != null) {
    line.drain();
    line.stop();
    line.close();
    line = null;
    shutDown(null);
    public AudioFormat getFormat() {
    AudioFormat.Encoding encoding = AudioFormat.Encoding.ULAW;
    String encString = "linear";
    float rate = Float.valueOf("44100").floatValue();
    int sampleSize = 16;
    String signedString = "signed";
    boolean bigEndian = true;
    int channels = 2;
    if (encString.equals("linear")) {
    if (signedString.equals("signed")) {
    encoding = AudioFormat.Encoding.PCM_SIGNED;
    } else {
    encoding = AudioFormat.Encoding.PCM_UNSIGNED;
    } else if (encString.equals("alaw")) {
    encoding = AudioFormat.Encoding.ALAW;
    return new AudioFormat(encoding, rate, sampleSize,
    channels, (sampleSize/8)*channels, rate, bigEndian);
    } // End class Playback
    package com.longshine.voice;
    import java.io.*;
    import java.util.Vector;
    import java.util.Enumeration;
    import javax.sound.sampled.*;
    import java.text.*;
    import java.net.*;
    public class Capture implements Runnable {
    TargetDataLine line;
    Thread thread;
    String errStr=null;
    DataOutputStream out=null;
    AudioInputStream audioInputStream;
    final int bufSize = 16384;
    int duration=0;
    public Capture(DataOutputStream out)
    this.out=out;
    public void start() {
    errStr = null;
    thread = new Thread(this);
    thread.setName("Playback");
    thread.start();
    public void stop() {
    thread = null;
    private void shutDown(String message) {
    if ((errStr = message) != null) {
    System.out.println(errStr);
    if (thread != null) {
    thread = null;
    public AudioFormat getFormat() {
    AudioFormat.Encoding encoding = AudioFormat.Encoding.ULAW;
    String encString = "linear";
    float rate = Float.valueOf("44100").floatValue();
    int sampleSize = 16;
    String signedString = "signed";
    boolean bigEndian = true;
    int channels = 2;
    if (encString.equals("linear")) {
    if (signedString.equals("signed")) {
    encoding = AudioFormat.Encoding.PCM_SIGNED;
    } else {
    encoding = AudioFormat.Encoding.PCM_UNSIGNED;
    } else if (encString.equals("alaw")) {
    encoding = AudioFormat.Encoding.ALAW;
    return new AudioFormat(encoding, rate, sampleSize,
    channels, (sampleSize/8)*channels, rate, bigEndian);
    public void run() {
    duration = 0;
    audioInputStream = null;
    // define the required attributes for our line,
    // and make sure a compatible line is supported.
    AudioFormat format = getFormat();
    DataLine.Info info = new DataLine.Info(TargetDataLine.class,
    format);
    if (!AudioSystem.isLineSupported(info)) {
    shutDown("Line matching " + info + " not supported.");
    return;
    // get and open the target data line for capture.
    try {
    line = (TargetDataLine) AudioSystem.getLine(info);
    line.open(format, line.getBufferSize());
    } catch (LineUnavailableException ex) {
    shutDown("Unable to open the line: " + ex);
    return;
    } catch (SecurityException ex) {
    shutDown(ex.toString());
    return;
    } catch (Exception ex) {
    shutDown(ex.toString());
    return;
    // play back the captured audio data
    int frameSizeInBytes = format.getFrameSize();
    int bufferLengthInFrames = line.getBufferSize() / 8;
    int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
    byte[] data = new byte[bufferLengthInBytes];
    int numBytesRead;
    line.start();
    try
    while (thread != null) {
    if((numBytesRead = line.read(data, 0, bufferLengthInBytes)) == -1) {
    break;
    if(data.length>0)
    out.write(data, 0, numBytesRead);
    out.flush();
    catch (Exception e)
    e.printStackTrace();
    // we reached the end of the stream. stop and close the line.
    line.stop();
    line.close();
    line = null;
    // stop and close the output stream
    try {
    out.flush();
    out.close();
    } catch (IOException ex) {
    ex.printStackTrace();
    } // End class Capture

    After a few days work, I have completed the mian voice chat program. I know there are so many people like me that wants that. I post these program. i will complete gui work later. and there is a problem in the program. if the speaking one do not speak for a while, the listening client will hear noise. Can some one help me.
    package com.longshine.voice;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class Server
    // The ServerSocket we'll use for accepting new connections
    private ServerSocket ss;
    // A mapping from sockets to DataOutputStreams. This will
    // help us avoid having to create a DataOutputStream each time
    // we want to write to a stream.
    private Hashtable outputStreams = new Hashtable();
    final int bufSize = 16384;
    //current speak_man
    private int speakman=-1;
    // Constructor and while-accept loop all in one.
    public Server( int port ) throws IOException {
    // All we have to do is listen
    listen( port );
    private void listen( int port ) throws IOException {
    // Create the ServerSocket
    ss = new ServerSocket( port );
    // Tell the world we're ready to go
    System.out.println( "Listening on "+ss );
    // Keep accepting connections forever
    while (true) {
    // Grab the next incoming connection
    Socket s = ss.accept();
    // Tell the world we've got it
    System.out.println( "Connection from "+s );
    // Create a DataOutputStream for writing data to the
    // other side
    DataOutputStream dout = new DataOutputStream( s.getOutputStream() );
    // Save this stream so we don't need to make it again
    outputStreams.put( s, dout );
    // Create a new thread for this connection, and then forget
    // about it
    new VoiceServer( this, s );
    // Get an enumeration of all the OutputStreams, one for each client
    // connected to us
    Enumeration getOutputStreams() {
    return outputStreams.elements();
    // Send a message to all clients (utility routine)
    void sendToAll( byte[] voice ,Socket socket) {
    // We synchronize on this because another thread might be
    // calling removeConnection() and this would screw us up
    // as we tried to walk through the list
    synchronized( outputStreams ) {
    // For each client ...
    for (Enumeration e = outputStreams.keys(); e.hasMoreElements(); ) {
    // ... get the output stream ...
    Socket tmp=(Socket)e.nextElement();
    if(!tmp.equals(socket))
    try {
    DataOutputStream dout = new DataOutputStream(tmp.getOutputStream());
    // ... and send the message
    dout.write(voice,0,44096);
    dout.flush();
    } catch( IOException ie ) { System.out.println( ie ); }
    // Remove a socket, and it's corresponding output stream, from our
    // list. This is usually called by a connection thread that has
    // discovered that the connectin to the client is dead.
    void removeConnection( Socket s ) {
    // Synchronize so we don't mess up sendToAll() while it walks
    // down the list of all output streamsa
    synchronized( outputStreams ) {
    // Tell the world
    System.out.println( "Removing connection to "+s );
    // Remove it from our hashtable/list
    outputStreams.remove( s );
    // Make sure it's closed
    try {
    s.close();
    } catch( IOException ie ) {
    System.out.println( "Error closing "+s );
    ie.printStackTrace();
    // Main routine
    // Usage: java Server <port>
    static public void main( String args[] ) throws Exception {
    // Get the port # from the command line
    int port = Integer.parseInt( args[0] );
    // Create a Server object, which will automatically begin
    // accepting connections.
    new Server( port );
    package com.longshine.voice;
    import java.net.*;
    import java.io.*;
    import java.sql.*;
    import java.io.*;
    import java.net.*;
    public class VoiceServer extends Thread
    // The Server that spawned us
    private Server server;
    final int bufSize = 16384;
    // The Socket connected to our client
    private Socket socket;
    // Constructor.
    public VoiceServer( Server server, Socket socket ) {
    // Save the parameters
    this.server = server;
    this.socket = socket;
    // Start up the thread
    start();
    // This runs in a separate thread when start() is called in the
    // constructor.
    public void run() {
    try {
    // Create a DataInputStream for communication; the client
    // is using a DataOutputStream to write to us
    DataInputStream din = new DataInputStream( socket.getInputStream() );
    byte[] voice=new byte[44096];
    // Over and over, forever ...
    while (true) {
    // ... read the next message ...
    // int bytes = din.read(voice,0,44096);
    int bytes = din.read(voice);
    // ... and have the server send it to all clients
    server.sendToAll(voice,socket);
    } catch( EOFException ie ) {
    // This doesn't need an error message
    } catch( IOException ie ) {
    // This does; tell the world!
    ie.printStackTrace();
    } finally {
    // The connection is closed for one reason or another,
    // so have the server dealing with it
    server.removeConnection( socket );
    package com.longshine.voice;
    import java.io.*;
    import java.net.*;
    public class Client {
    private String host="";
    private String port="";
    private Socket socket;
    private DataOutputStream dout;
    private DataInputStream din;
    private Capture capture=null;
    private Play play=null;
    public Client(String host,String port) {
    this.host=host;
    this.port=port;
    public void init()
    try
    socket = new Socket( host, Integer.parseInt(port));
    din = new DataInputStream( socket.getInputStream() );
    dout = new DataOutputStream( socket.getOutputStream());
    capture=new Capture(dout);
    play=new Play(din);
    catch(Exception e)
    e.printStackTrace();
    public static void main(String[] args) {
    Client client = new Client("172.18.220.176","5678");
    client.init();
    if(args[0].equalsIgnoreCase("say"))
    client.capture.start();
    if(args[0].equalsIgnoreCase("hear"))
    client.play.start();
    package com.longshine.voice;
    import java.io.*;
    import java.util.Vector;
    import java.util.Enumeration;
    import javax.sound.sampled.*;
    import java.text.*;
    import java.net.*;
    public class Play implements Runnable {
    SourceDataLine line;
    Thread thread;
    String errStr=null;
    DataInputStream in=null;
    AudioInputStream audioInputStream;
    final int bufSize = 16384;
    int duration=0;
    public Play(DataInputStream in)
    this.in=in;
    public void start() {
    errStr = null;
    thread = new Thread(this);
    thread.setName("Playback");
    thread.start();
    public void stop() {
    thread = null;
    private void shutDown(String message) {
    if ((errStr = message) != null) {
    System.err.println(errStr);
    if (thread != null) {
    thread = null;
    public void createAudioInputStream() {
    if (in != null ) {
    try {
    errStr = null;
    java.io.BufferedInputStream oin = new java.io.BufferedInputStream(in);
    audioInputStream = AudioSystem.getAudioInputStream(oin);
    } catch (Exception ex) {
    ex.printStackTrace();
    } else {
    public void run() {
    // reload the file if loaded by file
    if (in != null) {
    // createAudioInputStream();
    // make sure we have something to play
    // if (audioInputStream == null) {
    // shutDown("No loaded audio to play back");
    // return;
    // reset to the beginnning of the stream
    // try {
    // audioInputStream.reset();
    // } catch (Exception e) {
    // shutDown("Unable to reset the stream\n" + e);
    // return;
    // get an AudioInputStream of the desired format for playback
    AudioFormat format = getFormat();
    audioInputStream=new AudioInputStream(in, format, AudioSystem.NOT_SPECIFIED);
    AudioInputStream playbackInputStream = AudioSystem.getAudioInputStream(format, audioInputStream);
    if (playbackInputStream == null) {
    shutDown("Unable to convert stream of format " + audioInputStream + " to format " + format);
    return;
    // define the required attributes for our line,
    // and make sure a compatible line is supported.
    DataLine.Info info = new DataLine.Info(SourceDataLine.class,
    format);
    if (!AudioSystem.isLineSupported(info)) {
    shutDown("Line matching " + info + " not supported.");
    return;
    // get and open the source data line for playback.
    try {
    line = (SourceDataLine) AudioSystem.getLine(info);
    line.open(format, bufSize);
    } catch (LineUnavailableException ex) {
    shutDown("Unable to open the line: " + ex);
    return;
    // play back the captured audio data
    int frameSizeInBytes = format.getFrameSize();
    int bufferLengthInFrames = line.getBufferSize() / 8;
    int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
    byte[] data = new byte[bufferLengthInBytes];
    int numBytesRead = 0;
    // start the source data line
    line.start();
    while (thread != null) {
    try {
    if ((numBytesRead = playbackInputStream.read(data)) == -1) {
    break;
    int numBytesRemaining = numBytesRead;
    while (numBytesRemaining > 0 ) {
    numBytesRemaining -= line.write(data, 0, numBytesRemaining);
    } catch (Exception e) {
    shutDown("Error during playback: " + e);
    break;
    // we reached the end of the stream. let the data play out, then
    // stop and close the line.
    if (thread != null) {
    line.drain();
    line.stop();
    line.close();
    line = null;
    shutDown(null);
    public AudioFormat getFormat() {
    AudioFormat.Encoding encoding = AudioFormat.Encoding.ULAW;
    String encString = "linear";
    float rate = Float.valueOf("44100").floatValue();
    int sampleSize = 16;
    String signedString = "signed";
    boolean bigEndian = true;
    int channels = 2;
    if (encString.equals("linear")) {
    if (signedString.equals("signed")) {
    encoding = AudioFormat.Encoding.PCM_SIGNED;
    } else {
    encoding = AudioFormat.Encoding.PCM_UNSIGNED;
    } else if (encString.equals("alaw")) {
    encoding = AudioFormat.Encoding.ALAW;
    return new AudioFormat(encoding, rate, sampleSize,
    channels, (sampleSize/8)*channels, rate, bigEndian);
    } // End class Playback
    package com.longshine.voice;
    import java.io.*;
    import java.util.Vector;
    import java.util.Enumeration;
    import javax.sound.sampled.*;
    import java.text.*;
    import java.net.*;
    public class Capture implements Runnable {
    TargetDataLine line;
    Thread thread;
    String errStr=null;
    DataOutputStream out=null;
    AudioInputStream audioInputStream;
    final int bufSize = 16384;
    int duration=0;
    public Capture(DataOutputStream out)
    this.out=out;
    public void start() {
    errStr = null;
    thread = new Thread(this);
    thread.setName("Playback");
    thread.start();
    public void stop() {
    thread = null;
    private void shutDown(String message) {
    if ((errStr = message) != null) {
    System.out.println(errStr);
    if (thread != null) {
    thread = null;
    public AudioFormat getFormat() {
    AudioFormat.Encoding encoding = AudioFormat.Encoding.ULAW;
    String encString = "linear";
    float rate = Float.valueOf("44100").floatValue();
    int sampleSize = 16;
    String signedString = "signed";
    boolean bigEndian = true;
    int channels = 2;
    if (encString.equals("linear")) {
    if (signedString.equals("signed")) {
    encoding = AudioFormat.Encoding.PCM_SIGNED;
    } else {
    encoding = AudioFormat.Encoding.PCM_UNSIGNED;
    } else if (encString.equals("alaw")) {
    encoding = AudioFormat.Encoding.ALAW;
    return new AudioFormat(encoding, rate, sampleSize,
    channels, (sampleSize/8)*channels, rate, bigEndian);
    public void run() {
    duration = 0;
    audioInputStream = null;
    // define the required attributes for our line,
    // and make sure a compatible line is supported.
    AudioFormat format = getFormat();
    DataLine.Info info = new DataLine.Info(TargetDataLine.class,
    format);
    if (!AudioSystem.isLineSupported(info)) {
    shutDown("Line matching " + info + " not supported.");
    return;
    // get and open the target data line for capture.
    try {
    line = (TargetDataLine) AudioSystem.getLine(info);
    line.open(format, line.getBufferSize());
    } catch (LineUnavailableException ex) {
    shutDown("Unable to open the line: " + ex);
    return;
    } catch (SecurityException ex) {
    shutDown(ex.toString());
    return;
    } catch (Exception ex) {
    shutDown(ex.toString());
    return;
    // play back the captured audio data
    int frameSizeInBytes = format.getFrameSize();
    int bufferLengthInFrames = line.getBufferSize() / 8;
    int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
    byte[] data = new byte[bufferLengthInBytes];
    int numBytesRead;
    line.start();
    try
    while (thread != null) {
    if((numBytesRead = line.read(data, 0, bufferLengthInBytes)) == -1) {
    break;
    if(data.length>0)
    out.write(data, 0, numBytesRead);
    out.flush();
    catch (Exception e)
    e.printStackTrace();
    // we reached the end of the stream. stop and close the line.
    line.stop();
    line.close();
    line = null;
    // stop and close the output stream
    try {
    out.flush();
    out.close();
    } catch (IOException ex) {
    ex.printStackTrace();
    } // End class Capture

  • Chat program in release 4.7c

    hi guys,
    I was wondering how one can create a chat program in abap. As its possible in Java & .Net why an abaper under estimate himself. Now here imagine a simple chat program where one can send some text from his SAP GUI which will appear on others SAP GUI and viceversa. Dont think about some messangers like yahoo or gtalk.(dont over estimate being an abaper)
    So i developed two programs one to send text & other to receive text. Send prg. is module pool and receive prg. is a simple report which has timer class which gets data from table every second so user dont have to press any button to receive the message.
    To start chat you have to run both programs in your GUI where from send program you enter your name in one text field and your message in other text field by pressing enter it gets update in table field(not every time it insert new record, it simply update previous so table size would not increase). As the person with whoem you are chatting is also running both programs, your message appears in 2nd program on his GUI & yours also. followed by your name.
    Both chat programs works fine with more then two users also. i tried to combine both program in one screen so user can send & receive chat from one screen. but due to timer class used, its not possible as receive program keeps refreshing for every 1 second.
    so i am wondering is thier any way to run one modulepool program & one report in a single screen. some thing like screen splitting or docking???
    you are welcome to share your ideas regarding chat in ABAP/4(release 4.7)
    Regards,
    SUDHIR MANJAREKAR

    Yes, thats right. There are few ABAP codes which you can find in the net and can improvise on that.
    The program displays list of all users who are currently active on a list.
    You can select user and select press button on the application tool bar to send a message.
    Concerns here are: 1. The receiver cannot reply from the same popup. He has to run the program, select the user who has send message and reply. 2. You will not be able to see the entire message log.
    For logging messages you can try creating standard text for tracking dialog between any two user and something of that sort.
    regards,
    S. Chandramouli.

  • Need Help with Simple Chat Program

    Hello Guys,
    I'm fairly new to Java and I have a quick question regarding a simple chat program in java. My problem is that I have a simple chat program that runs from its own JFrame etc. Most of you are probably familiar with the code below, i got it from one of my java books. In any case, what I'm attempting to do is integrate this chat pane into a gui that i have created. I attempted to call an instace of the Client class from my gui program so that I can use the textfield and textarea contained in my app, but it will not allow me to do it. Would I need to integrate this code into the code for my Gui class. I have a simple program that contains chat and a game. The code for the Client is listed below.
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    public class Client
    extends JPanel {
    public static void main(String[] args) throws IOException {
    String name = args[0];
    String host = args[1];
    int port = Integer.parseInt(args[2]);
    final Socket s = new Socket(host, port);
    final Client c = new Client(name, s);
    JFrame f = new JFrame("Client : " + name);
    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent we) {
    c.shutDown();
    System.exit(0);
    f.setSize(300, 300);
    f.setLocation(100, 100);
    f.setContentPane(c);
    f.setVisible(true);
    private String mName;
    private JTextArea mOutputArea;
    private JTextField mInputField;
    private PrintWriter mOut;
    public Client(final String name, Socket s)
    throws IOException {
    mName = name;
    createUI();
    wireNetwork(s);
    wireEvents();
    public void shutDown() {
    mOut.println("");
    mOut.close();
    protected void createUI() {
    setLayout(new BorderLayout());
    mOutputArea = new JTextArea();
    mOutputArea.setLineWrap(true);
    mOutputArea.setEditable(false);
    add(new JScrollPane(mOutputArea), BorderLayout.CENTER);
    mInputField = new JTextField(20);
    JPanel controls = new JPanel();
    controls.add(mInputField);
    add(controls, BorderLayout.SOUTH);
    mInputField.requestFocus();
    protected void wireNetwork(Socket s) throws IOException {
    mOut = new PrintWriter(s.getOutputStream(), true);
    final String eol = System.getProperty("line.separator");
    new Listener(s.getInputStream()) {
    public void processLine(String line) {
    mOutputArea.append(line + eol);
    mOutputArea.setCaretPosition(
    mOutputArea.getDocument().getLength());
    protected void wireEvents() {
    mInputField.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
    String line = mInputField.getText();
    if (line.length() == 0) return;
    mOut.println(mName + " : " + line);
    mInputField.setText("");

    Thanks for ur help!i have moved BufferedReader outside the loop. I dont think i am getting exception as i can c the output once.What i am trying to do is repeat the process which i m getting once.What my method does is first one sends the packet to multicasting group (UDP) and other method receives the packets and prints.

  • Multithreading issue with Client/Server chat program

    In a nutshell, I just recently starting attempting to use Sockets and decided I wanted to give a go at a chat program. I have some experience with threads but I know little about how to find and fix multithreading issues. I think this is my problem right now since I am deadlocking while connecting and disconnecting client-side ... and updates about connection status of a client are not always displaying correctly server-side.
    [ Code Snippet|http://snipplr.com/view/15206/clientserver-chat-program/]
    Thanks for the help

    NOTE: all catch clauses have been omitted for clarity. They all just perform System.err.println() with the msg embedded
    Very valid point. I cut out the GUIs and just tried having the Server/Client communicate. I am still having concurrency issues. This is my first attempt at synchronized methods and locking objects so go easy on me if I did something(s) noob =D
    public class MySocket
        public static final String QUIT = "~~QUIT~~";
        private ObjectOutputStream out;
        private ObjectInputStream in;
        private Socket conn;
        public MySocket(String ip)
            obsList = new ArrayList<IClientObs>();
            try
                conn = new Socket(ip, 5000);
                if (conn.isConnected())
                    out = new ObjectOutputStream(conn.getOutputStream());
                    in = new ObjectInputStream(conn.getInputStream());
        public synchronized String nextMsg()
            String msg = "";
            try
                synchronized(in)
                    msg = (String)in.readObject();
                    notify(msg);
            return(msg);
        public synchronized boolean sendMsg(String msg)
            boolean sentMsg = false;
            try
                synchronized(out)
                    if (out != null)
                        out.writeObject(msg);
                        out.flush();
                        sentMsg = true;
            return(sentMsg);
        public synchronized void closeConn()
            try
                synchronized(this)
                    sendMsg(QUIT);
                    conn.close();
                    out.close();
                    in.close();
        public synchronized Socket getConn()
            return(conn);
        public synchronized ObjectOutputStream getOutStream()
            return(out);
        public synchronized ObjectInputStream getInStream()
            return(in);
       //Observer Pattern implemented below   
    public class Server extends Thread
        public static final int MAX_CLIENTS = 2;
        public static final String QUIT = "~~QUIT~~";
        private ServerSocket server;
        private ArrayList<ConnClient> conns;
        private int connCount;
         * Constructor for objects of class Server
        public Server()
            conns = new ArrayList<ConnClient>();
            obsList = new ArrayList<IServerObs>();
            connCount = 0;
        public void startNow()
            this.start();
        public void run()
            runServer();
        public synchronized void runServer()
            try
                setup();
                while (true)
                    waitForConn();
                    processComms();
        private synchronized void setup() throws IOException
            server = new ServerSocket(5000);
            notify("Server initialized.\n");
        private synchronized void waitForConn() throws IOException
            if (connCount < MAX_CLIENTS)
                notify("Waiting for connection...\n");
                Socket conn = server.accept();
                if (conn.isConnected())
                    conns.add(new ConnClient(conn));
                    notify("Client connected @ '" + conns.get(connCount).getIP() + "'.\n");
                    connCount++;
            else
                notify("Connection request rejected; max connections have been reached.\n");
        private synchronized void processComms() throws IOException, ClassNotFoundException
            //Receive any msgs sent by clients and forward msg to all clients
            for(ConnClient rcvClient : conns)
                String msg = rcvClient.nextMsg();
                //if client quit, then close connection and remove it from list
                if (msg.equals(QUIT))
                    notify("Client disconnected @ '" + rcvClient.getIP() + "'.\n");
                    rcvClient.closeConn();
                    conns.remove(rcvClient);
                    connCount--;
                else
                    for(ConnClient sndClient : conns)
                        sndClient.sendMsg(msg);
        public synchronized void shutdown()
            try
                server.close();
                for(ConnClient client :conns)
                    client.closeConn();
       //Observer Pattern implemented below
    }I also found another issue that I haven't thought up a way to deal with yet. When the user starts the program the follow line is executed "conn = server.accept();" which halts execution
    on that thread until a connection is established. What if the user wants to stop the server before a connection is made? The thread keeps running, waiting for a connection. How do I kill this thread?
    On this last issue (I figured by adding the follow code to my action listener inside of my server gui I could stop the thread safely but it's no good so far)
    public void actionPerformed(ActionEvent e)
            Object src = e.getSource();
            if (src == strBtn)
                if (server == null)
                    strBtn.setEnabled(false);
                    stpBtn.setEnabled(true);
                    server = new Server();
                    server.addObserver(this);
                    server.start();
                else
                    console.append("Console: Server is alread initiated.\n");
            else if (src == stpBtn)
                synchronized(server)
                strBtn.setEnabled(true);
                stpBtn.setEnabled(false);
                server.shutdown();
                server = null;
                console.append("Console: Server has been stopped.\n");
        }Edited by: mcox05 on May 21, 2009 10:05 AM
    Edited by: mcox05 on May 21, 2009 10:17 AM
    Edited by: mcox05 on May 21, 2009 10:58 AM
    Edited by: mcox05 on May 21, 2009 11:01 AM
    Edited by: mcox05 on May 21, 2009 11:03 AM
    Edited by: mcox05 on May 21, 2009 11:03 AM

  • Anything simple I can add to a GUI for some extra credit?

    I had to write a GUI for my COMP class this time, and if we add anything extra, we can get some extra points..which would be quite nice.
    I have the GUI made and working as we were shown how to do, and now I would like to add some extra things to make it better.
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Tuition extends JFrame
        private JLabel stateResL, credsL, typeL, tuitFeeL, actFeeL;
        private JTextField stateResTF, credsTF, typeTF, tuitFeeTF, actFeeTF;
        private JButton calculateB, exitB;
        private CalculateButtonHandler cbHandler;
        private ExitButtonHandler ebHandler;
        public Tuition()
            stateResL = new JLabel ("Is Student a TN State Resident? 1 = yes, 0 = no ", SwingConstants.RIGHT);
            credsL = new JLabel ("Enter number of credits presently being taken: ", SwingConstants.RIGHT);
            typeL = new JLabel ("Is student an undergraduate = 0, or graduate student = 1? ", SwingConstants.RIGHT);
            actFeeL = new JLabel ("Activity Fee: ", SwingConstants.RIGHT);
            tuitFeeL = new JLabel ("Tuition amount owed = $", SwingConstants.RIGHT);
            //text fields
            stateResTF = new JTextField(10);
            credsTF = new JTextField(10);
            typeTF = new JTextField(10);
            actFeeTF = new JTextField(10);
            tuitFeeTF = new JTextField(10);
             //calculate button
            calculateB = new JButton ("Calculate Tuition");
            cbHandler = new CalculateButtonHandler();
            calculateB.addActionListener(cbHandler);
            //exit button
            exitB = new JButton ("Exit");
            ebHandler = new ExitButtonHandler();
            exitB.addActionListener(ebHandler);
            //set title of window
            setTitle("Tuition and extra Fees");
            //get container
            Container pane = getContentPane();
            //set layout
            pane.setLayout (new GridLayout (6, 2));
            //place components in pane
            pane.add (stateResL);
            pane.add (stateResTF);
            pane.add (credsL);
            pane.add (credsTF);
            pane.add (typeL);
            pane.add (typeTF);
            pane.add (tuitFeeL);
            pane.add (tuitFeeTF);
            pane.add (actFeeL);
            pane.add (actFeeTF);
            pane.add (calculateB);
            pane.add (exitB);
            setSize (WIDTH, HEIGHT);
            setVisible (true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        private class CalculateButtonHandler implements ActionListener
            public void actionPerformed (ActionEvent e)
                //computes activity fee and tuition and sets them to respective variables
                double tuition = 0;
                double actFee = 0;
                int credits, stateRes, type;
                type = Integer.parseInt(typeTF.getText());
                stateRes = Integer.parseInt(stateResTF.getText());
                credits = Integer.parseInt(credsTF.getText());
                if (credits >= 6)
                       actFee = 44;
                else
                    actFee = 6 * credits;
                if (stateRes == 0)
                        if (type == 1 || type == 0)
                            tuition = ((448 * credits) + actFee);
                else if (stateRes == 1)
                        if (type == 0)
                            tuition = ((241 * credits ) + actFee);
                        else if (type == 1)
                            tuition = ((343 * credits ) + actFee);
                    actFeeTF.setText ("" + actFee);
                    tuitFeeTF.setText ("" + tuition);
            private class ExitButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e)
                    System.exit(0);
    }I don't care for something way out of my league (I'm only in my second semester of actually doing "tough" stuff. Maybe something that would change the colors of the text fields where the questions are, or change the color of the font printed, or change the font type, maybe add a logo or something for a school (it's a tuition calculator).
    I looked through the API but reading over class names doesn't do much for me, and I searched Google a bit but most of the stuff I found seemed pretty difficult/beyond my knowledge.

    alright...I fixed the messy issue, but I don't know how to setup the action listeners or whatever...
    I need my calculate tuition method to work using the radio buttons, and I don't know how to set up the listeners correctly.
    I can't find a single example on the internet that does anything like what I'm doing that I can use as a reference. I need something using radio buttons that calculates another number based on the results of the radio buttons...like what mine should do.
    This has got to be a noob question, but I just can't get it to work....
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Tuition extends JFrame
        private JLabel stateResL, credsL, typeL, tuitFeeL, actFeeL;
        private JTextField stateResTF, credsTF, typeTF, tuitFeeTF, actFeeTF;
        private JButton gradB, calculateB, exitB;
        private CalculateButtonHandler cbHandler;
        private ExitButtonHandler ebHandler;
        private StateResButtonHandler srbHandler;
        private NonStateResButtonHandler nsrbHandler;
        private UndGradButtonHandler ugbHandler;
        private GradButtonHandler gbHandler;
        /** extra */
        JScrollBar scrollbar_h_1;
        JScrollBar scrollbar_v_1;
        JRadioButton undGradRB, gradRB, stateResRB, nonStateResRB;
        ButtonGroup radioGroup1, radioGroup2;
        static String stateResString = "Resident";
        static String nonResString = "Non-Resident";
        static String undGradString = "Undergraduate";
        static String gradString = "Graduate";
        public Tuition()
            getContentPane().setFont(new Font("Arial", Font.ITALIC, 12));
            getContentPane().setBackground(Color.blue);
            stateResL = new JLabel ("Is Student a TN State Resident? ", SwingConstants.RIGHT);
            credsL = new JLabel ("Enter number of credits presently being taken: ", SwingConstants.RIGHT);
            typeL = new JLabel ("Is student an undergraduate, or graduate student? ", SwingConstants.RIGHT);
            actFeeL = new JLabel ("Activity Fee: ", SwingConstants.RIGHT);
            tuitFeeL = new JLabel ("Tuition amount owed = $", SwingConstants.RIGHT);
            //text fields
            credsTF = new JTextField(10);
            actFeeTF = new JTextField(10);
            tuitFeeTF = new JTextField(10);
             //calculate button
            calculateB = new JButton ("Calculate Tuition");
            cbHandler = new CalculateButtonHandler();
            calculateB.addActionListener(cbHandler);
            //exit button
            exitB = new JButton ("Exit");
            ebHandler = new ExitButtonHandler();
            exitB.addActionListener(ebHandler);
            radioGroup1 = new ButtonGroup();
            JRadioButton stateResButton = new JRadioButton(stateResString);
            stateResButton.setMnemonic(KeyEvent.VK_B);
            stateResButton.setActionCommand(stateResString);
            stateResButton.setSelected(true);
            JRadioButton nonResButton = new JRadioButton(nonResString);
            nonResButton.setMnemonic(KeyEvent.VK_B);
            nonResButton.setActionCommand(nonResString);
            radioGroup1.add (stateResButton);
            radioGroup1.add (nonResButton);
            radioGroup2 = new ButtonGroup();
            JRadioButton undGradButton = new JRadioButton(undGradString);
            undGradButton.setMnemonic(KeyEvent.VK_B);
            undGradButton.setActionCommand(undGradString);
            undGradButton.setSelected(true);
            JRadioButton gradButton = new JRadioButton(gradString);
            gradButton.setMnemonic(KeyEvent.VK_B);
            gradButton.setActionCommand(gradString);
            radioGroup2.add(undGradButton);
            radioGroup2.add(gradButton);
            srbHandler = new StateResButtonHandler();
            stateResButton.addActionListener(stateResString);
            nrbHandler = new NonResButtonHandler();
            nonResButton.addActionListener(nonResString);
            ugbHandler = new UndGradButtonHandler();
            undGradButton.addActionListener(undGradString);
            gbHandler = new GradButtonHandler();
            gradButton.addActionListener(gradString);
            //set title of window
            setTitle("Tuition and extra Fees");
            //get container
            Container pane = getContentPane();
            //set layout
            pane.setLayout (new GridLayout (6, 2));
            JPanel radioPanel = new JPanel(new GridLayout(0, 1));
            radioPanel.add(stateResButton);
            radioPanel.add(nonResButton);
             JPanel radioPanel2 = new JPanel(new GridLayout(0, 1));
             radioPanel2 = new JPanel (new GridLayout(0, 1));
             radioPanel2.add (undGradButton);
             radioPanel2.add (gradButton);
            //place components in pane
            pane.add (stateResL);
            add(radioPanel);
            pane.add (credsL);
            pane.add (credsTF);
            pane.add (typeL);
            add(radioPanel2);
            pane.add (actFeeL);
            pane.add (actFeeTF);
            pane.add (tuitFeeL);
            pane.add (tuitFeeTF);
            pane.add (calculateB);
            pane.add (exitB);
            setSize (WIDTH, HEIGHT);
            setVisible (true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            /** EXTRA - EXTRA - EXTRA */
            calculateB.setToolTipText("Click this button to calculate tuition and activity fee.");
            exitB.setToolTipText("Click this button to exit the program.");
        private class CalculateButtonHandler implements ActionListener
            public void actionPerformed (ActionEvent e)
                //computes activity fee and tuition and sets them to respective variables
                double tuition = 0;
                double actFee = 0;
                int credits, stateRes, type;
                type = Integer.parseInt(typeTF.getText());
                stateRes = Integer.parseInt(stateResTF.getText());
                credits = Integer.parseInt(credsTF.getText());
                if (credits >= 6)
                       actFee = 44;
                else
                    actFee = 6 * credits;
                if (stateRes == 0)
                        if (type == 1 || type == 0)
                            tuition = ((448 * credits) + actFee);
                else if (stateRes == 1)
                        if (type == 0)
                            tuition = ((241 * credits ) + actFee);
                        else if (type == 1)
                            tuition = ((343 * credits ) + actFee);
                    actFeeTF.setText ("" + actFee);
                    tuitFeeTF.setText ("" + tuition);
            private class ExitButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e)
                    System.exit(0);
            private class StateResButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e){
            private class NonStateResButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e){
            private class UndGradButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e) {
            private class GradButtonHandler implements ActionListener
                public void actionPerformed (ActionEvent e) {
    }the calculateB and exitB listeners work, but I have nothing setup for the others that works. And the calculate button doesn't work because it isn't getting any info from the buttons.
    I get addActionListener(Java.awt.event.ActionListener) in Javax.swing.AbstractButton cannot be applied to (java.lang.String). on the listeners I attempted to add within the constructor....

  • Creating a GUI for use on an Ethernet Network

    I'm designing a data logger to log voltage, current and temperature data on a reserve battery string while it's being charged. The logger will have the capability to be viewed remotely via Ethernet. With that said, I'd like some advice regarding the GUI for the remote PC which will be used to view the logger. Will it be easier to create the GUI using LabView or another high-level language  (Java, C++ etc)? (Note: I have some programming experience in C (though I've never written/created a GUI) and I've never used LabView).
    Solved!
    Go to Solution.

    Hi Joe1373.  In general, for a small one-off project, I would suggest you go with a language you know.
    In this case it sounds like whatever you choose you will have a learning curve, so I would recommend
    LabVIEW if that is a possibility cost-wise.  LV has a lot of built-in support for GUI development so
    you can make realtively sophisticated GUIs without a whole lot of work/learning.
    There are time-limited evaluation versions of LV available for download.  I would take a look there, especially
    the examples.  Find something a little similar to what you want to do, then change the GUI on the 
    example to more closely match your ultimate objective to get a feel for the GUI development in LV.
    This forum is a great resource with some very helpful developers, so come back with questions.
    There are also many professional developers available to assist if you have a budget or inclination
    towards that direction.
    Matt

  • Is it possible to make an "internet" chat program?

    I have already made a chat program for a LAN, but I want to somehow make it usable over the internet. Is there a way to make the program use your internet ip, instead of your lan ip?

    Hello: I gott a similar trouble over writing an internet chat app. I have an app that works on a local server, works with a local database, i want it to work on internet, but i dont know how to do it, i also use a server app for replying client queries. I'm using sockets and i don't know how a client can works throught a LAN - proxy or router internet acces - to the app if i have to place it on a web server

  • Report painter report in portal - Excel output in SAP GUI for HTML

    Dear sirs,
    I need your expertize. I would like to let my users display (Excel in place)/ save the result of my report painter reports into MS Excel. I have found notes 499262 a 314568, but didn´t understand the message (or there is no message:)). Does that mean I cannot use Excel in place together with Report painter and SAP GUI for HTML?
    Second question: is there a place (user exit in generated code? I don´t even know what I am looking for) to get the data provided by the report painter engine and send the retrieved data to some custom function (to be able to call the Adobe form, to save it as a text file or any option how to manipulate the resulting data...?).
    thank you for your time and effort,
    regards Otto

    Hi Otto,
    You can send print the report to the spool and then use RSTXPDFT4 program to convert this spool to PDF file. Alternatively, you can export the spool to spreadsheet or ASCII file via SP01 transaction.
    Additinally, I'm not aware of unability to use Excel output with SAP GUI interface.
    Regards,
    Eli

  • Help me in my chat program please

    hi,
    Im doing chat program same as yahoo messenger using Java.Please help me in creating rooms....so that it will be a great help for me to finish my project..
    Thanks in advance
    PadmaPriya.

    hi,
    Actually i have a common room in which people enter through a login screen and chat...it shows the user list .
    what i want to do is i want to add a combo box in the login screen with mulitple rooms...the user should select rooms and then must be able to chat....in their rooms...
    so that many rooms would function at a time..and people will be chatting correspondingly....can u please help me in doing that...
    Thanks in advance
    PadmaPriya.

Maybe you are looking for

  • How to get the type of the object poped from a stack

    Hi, I have a stack which contains Boolean, Integer, MyBean objects. Now depending on the type of object pop from stack i want to perform the different operations. Right now i m doing it like this: Object a = stk.pop(); // stk is my stack if ( a insta

  • BO FC 10.0 problem with alerts and notifications for Workflow

    HI guyz. I can't save e-mail password in option Tools -> General Options -> Alert and Notification. So if you had the same problem, how did you solve it? Thank you.

  • Workflow Timestamps?

    I am trying to capture user activity for steps of a workflow in my underlying library (not just in the workflow history). I have tried using lookups to copy the "date occurred" from a specific log/history message, which is successful, but always disp

  • Linq orderby ascending with 0 last (as in 1, 2, 3, 0)

    Hello, Can anyone suggest a way to modify this linq query such that the result returned is sorted ascending with 0 last (as in 1, 2, 3, 0)?             var _players = from p in db.Players                            where p.ChampionshipId == _ChampId

  • On-line Rejection

    Dear PP Gurus, Can anyone guide me what is the SAP Best practice in the scenario - 'on-line rejection after payment is made to vendor'. Thanks in advance Kailash T.