我看到这样的问题很多,但它没有回答我的问题。我是Java的新手。我试图从JTextField
获取一些输入并将其作为String
返回,以便我可以在不同的类中进行比较。这就是我所看到的答案,我希望能够在班级的任何其他部分使用str
。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class ClassFrame extends JFrame {
private static final long serialVersionUID = 2451829341034438685L;
public static JButton inputButton = new JButton("Send");
public static JTextArea editTextArea = new JTextArea("Type Here!");
public static JTextArea uneditTextArea = new JTextArea();
public ClassFrame(String title) {
//SET LAYOUT MANAGER (How it arranges components)
setLayout(new BorderLayout());
//////CREATE SWING COMPONENTS////////////
//OUTPUT TEXT AREA
uneditTextArea.setEditable(false);
//INPUT TEXT AREA
editTextArea.setBackground(Color.BLUE);
editTextArea.setForeground(Color.WHITE);
//SET CONTENT PANE
Container c = getContentPane();
//ADD COMPONENTS TO CONTENT PANE
c.add(uneditTextArea, BorderLayout.CENTER);
c.add(editTextArea, BorderLayout.SOUTH);
c.add(inputButton, BorderLayout.WEST);
ClassFrame.inputButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String str = editTextArea.getText();
editTextArea.setText(" ");
System.out.println(str);
}
});
}
}
答案 0 :(得分:6)
查看我的评论。
package applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class ClassFrame extends JFrame {
private static final long serialVersionUID = 2451829341034438685L;
public static JButton inputButton = new JButton("Send");
public static JTextArea editTextArea = new JTextArea("Type Here!");
public static JTextArea uneditTextArea = new JTextArea();
// MA - Your String, defined here and usable throughout the class
private String myString;
public ClassFrame(String title) {
// MA - Indent your code properly so that it's more readable to both you
// and others
//SET LAYOUT MANAGER (How it arranges components)
setLayout(new BorderLayout());
//////CREATE SWING COMPONENTS////////////
//OUTPUT TEXT AREA
uneditTextArea.setEditable(false);
//INPUT TEXT AREA
editTextArea.setBackground(Color.BLUE);
editTextArea.setForeground(Color.WHITE);
//SET CONTENT PANE
Container c = getContentPane();
//ADD COMPONENTS TO CONTENT PANE
c.add(uneditTextArea, BorderLayout.CENTER);
c.add(editTextArea, BorderLayout.SOUTH);
c.add(inputButton, BorderLayout.WEST);
ClassFrame.inputButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// MA - Using the class field myString to receive text from text area
myString = editTextArea.getText();
// MA - Don't use a space when you actually want an empty string.
// As it stands, your code will test for a single space character.
// You really want it to test whether the text area is empty.
//editTextArea.setText(" ");
// MA - Do this instead. An empty string means the text area has
// no input at all.
editTextArea.setText("");
System.out.println(myString);
}
});
}
}
我建议你对Java中的变量作用域进行一些阅读。你可以谷歌吧。
答案 1 :(得分:2)
根据我对这个问题的理解,这是一个比较字符串并将输出附加到JTextArea
的简单示例。
public class Test
{
private static String ENTER = "Enter";
static JButton enterButton;
public static JTextArea output;
public static JTextField input;
static JFrame frame;
static JPanel panel;
public static String testString = "test";
public static void main(String... args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception ex)
{
ex.printStackTrace();
}
createFrame();
}
public static void createFrame()
{
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setOpaque(true);
ButtonListener buttonListener = new ButtonListener();
output = new JTextArea(15, 50);
output.setWrapStyleWord(true);
output.setEditable(false);
JScrollPane scroller = new JScrollPane(output);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JPanel inputpanel = new JPanel();
inputpanel.setLayout(new FlowLayout());
input = new JTextField(20);
enterButton = new JButton("Enter");
enterButton.setActionCommand(ENTER);
enterButton.addActionListener(buttonListener);
// enterButton.setEnabled(false);
input.setActionCommand(ENTER);
input.addActionListener(buttonListener);
DefaultCaret caret = (DefaultCaret) output.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
panel.add(scroller);
inputpanel.add(input);
inputpanel.add(enterButton);
panel.add(inputpanel);
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.pack();
frame.setLocationByPlatform(true);
// Center of screen
// frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setResizable(false);
input.requestFocus();
}
public static class ButtonListener implements ActionListener
{
public void actionPerformed(final ActionEvent ev)
{
if (!input.getText().trim().equals(""))
{
String cmd = ev.getActionCommand();
if (ENTER.equals(cmd))
{
output.append(input.getText());
if (input.getText().trim().equals(testString)) output.append(" = " + testString);
else output.append(" != " + testString);
output.append("\n");
}
}
input.setText("");
input.requestFocus();
}
}
}