I am a newb in Swing so this may be stupid.
Anyway I have created a class that extends JFrame and inside a panel are contained a JTextField a JTextArea and a JButton.
This is supposed to be a console implementation so the TextField will print the input to the TextArea when I press Enter or the Button next to it.
I have made the listener for this and everything works fine. My problem now is how do I make a method that expects me to press Enter on the Field? e.g. I have a method that needs 3 line input. First line calls method, second one expects me to input something and third one expects some more input. After all input is finished I print something to the TextArea.
So practically will the method have to wait a Listener to fire or what? Can someone explain how this thing can work if at all or give me a workaround that does the trick?
Keep in mind I want some reusable way because I will probably implement a lot of methods with multi-line input. Thanks in advance!
Update: here is my class that extends JFrame - code was netbean generated mostly, I will make sure to work on the import statements sooner or later. I have not implemented a method as of yet because I have no idea how to do so, but expect me adding a little piece of code checking if the input is right at first (inside the ConsoleInputAcionPerformed) and call the method (let's call it methodX) that will need the rest of the two input lines. This class is called from another class in my main().
public class MainWindow extends javax.swing.JFrame {
private javax.swing.JButton EnterButton;
private javax.swing.JPanel ConsolePanel;
private javax.swing.JScrollPane ConsoleScroll;
private javax.swing.JTextArea ConsoleOutput;
private javax.swing.JTextField ConsoleInput;
public MainWindow() {
initComponents();
}
private void initComponents() {
ConsolePanel = new javax.swing.JPanel();
ConsoleScroll = new javax.swing.JScrollPane();
ConsoleOutput = new javax.swing.JTextArea();
ConsoleInput = new javax.swing.JTextField();
EnterButton = new javax.swing.JButton();
setTitle("Graphical Super Console v.1.0");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setPreferredSize(new java.awt.Dimension(800, 600));
ConsoleOutput.setColumns(20);
ConsoleOutput.setRows(5);
ConsoleOutput.setLineWrap(true);
ConsoleOutput.setEditable(false);
ConsoleOutput.setFont(new java.awt.Font("Consolas", 1, 14));
ConsoleScroll.setViewportView(ConsoleOutput);
ConsoleScroll.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
ConsoleInput.setText("");
ConsoleInput.requestFocusInWindow();
ConsoleInput.setFont(new java.awt.Font("Consolas", 1, 14));
ConsoleInput.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ConsoleInputActionPerformed(evt);
}
});
EnterButton.setText(">>");
EnterButton.setFont(new java.awt.Font("Consolas", 1, 14));
EnterButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ConsoleInputActionPerformed(evt);
}
});
javax.swing.GroupLayout ConsolePanelLayout = new javax.swing.GroupLayout(ConsolePanel);
ConsolePanel.setLayout(ConsolePanelLayout);
ConsolePanelLayout.setHorizontalGroup(
ConsolePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ConsolePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(ConsolePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ConsoleScroll)
.addGroup(ConsolePanelLayout.createSequentialGroup()
.addComponent(ConsoleInput, javax.swing.GroupLayout.DEFAULT_SIZE, 679, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(EnterButton)))
.addContainerGap())
);
ConsolePanelLayout.setVerticalGroup(
ConsolePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ConsolePanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ConsoleScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 536, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(ConsolePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(EnterButton)
.addComponent(ConsoleInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ConsolePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ConsolePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
setVisible(true);
ConsoleInput.requestFocus();
}
private void ConsoleInputActionPerformed(java.awt.event.ActionEvent evt) {
printf(">"+ConsoleInput.getText()+"\n");
ConsoleInput.setText("");
}
public javax.swing.JTextArea getConsoleOutput(){
return ConsoleOutput;
}
public javax.swing.JTextField getConsoleInput(){
return ConsoleInput;
}
public void printf(Object... obj){
for(int i=0; i<obj.length; i++){
ConsoleOutput.append(String.valueOf(obj[i]));
}
}
}