Search code examples
javajoptionpane

JOptionPane using one window for input and output


So I'm working on a little project and I'm looking for the base code for how to do this in JOptionPane. I'm still really new to this side of Java. I'm not looking for a whole lot, I just didn't know where to start.

The program should populate the screen with a JOptionPane window. I need it to be modeled like the picture below. The bottom row is a text input from the user and when they hit the enter key, the text should "refresh/clear" and then the middle string area should populate with both the user input and then just below it the result of an if statement according the the code.

enter image description here

for example: The user enters in: "Hello". Then the text input should refresh and the grey box should do this: "User: Hello." "Computer: Hello user".

I would really appreciate any and all help on this.


Solution

  • You don't System.out.println() into a gui component. Doesn't work like this. You can write a console program and use JOptionPanes to get user input, but the output would be used in the console program. You would need to create a gui program mimic a console.

    Here's a basic layout to start you off

    public class Game extends JFrame {
        JTextArea jta = new JTextArea(10, 30);
        JTextField jtf = new JTextField(30);
    
        public Game(){
            add(jtf, BorderLayout.SOUTH);
            add(jta, BorderLayour.CENTER);
    
            jta.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
    
                }
            });
        }
    
        public static void main(String[] args){
            SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    JFrame frame = new Game();
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLocationRelativeTo(null);
                    frame.pack();
                    frame.setVisible(true);
                }
            });
        }
    }
    

    What I would suggest is since this is a very basic program, I would use an array of String commands and iterate through them.

    For example:

    String[] question = {"Do you want to go to school?",
                         "Do you want to drive or walk?"};
    
    jta.setText(questions[0]);
    

    Then in your actionPerformed get the answer from the text field. Use an if statement like

    if (jtf.getText().equals("yes") {
        jta.append(questions[1]);
    }
    

    And so on. If you have no idea what I'm talking about, I would really consider using the Swing tutorials I mentioned. There's a lot of info in those tutorials.