当我尝试使用if语句将两个单独的单词打印到控制台时,无论输入什么,它都只会一直返回一个单词。
我的完整代码:
public class Frame{
//Declaring needed text variables
//Text Pane
static JFormattedTextField formattedTextField = new JFormattedTextField();
static String username = formattedTextField.getText();
//Frame
static JFrame UsernameFrame = new JFrame("Welcome");
/**
* @wbp.parser.entryPoint
*/
public static void frame(){
/**
* Configuring the Frame
*/
UsernameFrame.setSize(400,150);
UsernameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
UsernameFrame.getContentPane().setLayout(null);
/**
* Configuring Submit button
*/
JButton btnSubmit = new JButton("Submit");
btnSubmit.setBounds(0, 89, 384, 23);
btnSubmit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(username.length() < 5){
System.out.println("no");
}
if(username.length() > 5){
System.out.println("continue");
}
//Execute when the button is pressed
System.out.println("The button has been pressed");
}
});
UsernameFrame.getContentPane().add(btnSubmit);
/**
* Configuring user-name text pane
*/
JLabel lblEnterYourSelected = new JLabel("Enter your selected username below");
lblEnterYourSelected.setHorizontalAlignment(SwingConstants.CENTER);
lblEnterYourSelected.setBounds(81, 11, 214, 14);
UsernameFrame.getContentPane().add(lblEnterYourSelected);
/**
* Configuring content pane
*/
formattedTextField.setBounds(129, 36, 120, 20);
UsernameFrame.getContentPane().add(formattedTextField);
UsernameFrame.setVisible(true);
}
}
以下是我正在使用的具体行
if(username.length() < 5){
System.out.println("no");
}
if(username.length() > 5){
System.out.println("continue");
}
我看了很多解决方案,我找不到一个。
答案 0 :(得分:3)
您必须在按下按钮后读取用户名的值,在这种情况下,它将采用输入的最新值并检查长度。
如果您声明如下
public void actionPerformed(ActionEvent e){
String username = formattedTextField.getText();
if(username.length() < 5){
System.out.println("no");
}
if(username.length() > 5){
System.out.println("continue");
}
//Execute when the button is pressed
System.out.println("The button has been pressed");
}
这会奏效。 此外,您还必须包括条件以测试长度是否等于5。