我正在尝试为我的程序设置一个GUI,并使它大部分都能正常工作。但是,我希望能够创建一种与Scanner的nextLine()类似的方法。它等待我的JTextField输入,然后返回它。这是我的GUI的当前代码:
package util; import java.awt.Font; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.JScrollPane; import com.jgoodies.forms.factories.DefaultComponentFactory; public class Gui { public JFrame frame; private JTextField textField; private final JLabel lblVector = DefaultComponentFactory.getInstance().createTitle("Please type commands below."); private JScrollPane scrollPane; private JTextArea textArea; /** * Create the application. */ public Gui() { initialize(); } /** * Initialize the contents of the frame. */ public void print(String text){ textArea.append(text+"\n"); } public String getInput() { String input = textField.getText(); textField.setCaretPosition(0); return input; } private void initialize() { frame = new JFrame("Vector"); frame.setBounds(100, 100, 720, 720); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); textField = new JTextField(); frame.getContentPane().add(textField, BorderLayout.SOUTH); textField.setColumns(10); frame.getContentPane().add(lblVector, BorderLayout.NORTH); scrollPane = new JScrollPane(); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); textArea = new JTextArea(); textArea.setFont(new Font("Monospaced", Font.PLAIN, 15)); textArea.setEditable(false); scrollPane.setViewportView(textArea); } }
我希望能够这样称呼它:
String menus = gui.getInput();
或类似;我已经将gui变量设置为新的Gui()。
通过搜索,我发现它可能涉及DocumentListener或ActionListener或两者都涉及。
ActionListener在文本字段中添加一个。当文本字段具有焦点并且用户按下时Enter,将触发一个事件。有关更多详细信息,请参见如何编写动作侦听器。
ActionListener
Enter