import javax.swing.*;
import java.awt.event.*;
import java.util.Scanner;
@SuppressWarnings("unused")
public class Fun {
@SuppressWarnings({"static-access", "resource"})
public static void main(String[] args) {
JFrame f = new JFrame("The Gamer Zone");
//set size and location of frame
f.setSize(390, 300);
f.setLocation(100, 150);
//make sure it quits when x is clicked
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//set look and feel
f.setDefaultLookAndFeelDecorated(true);
JLabel labelM = new JLabel("Are you an epic gamer? (true,false) ");
labelM.setBounds(50, 50, 250, 30);
JTextField Text = new JTextField();
//set size of the text box
Text.setBounds(50, 100, 200, 30);
//add elements to the frame
f.add(labelM);
f.add(Text);
f.setLayout(null);
f.setVisible(true);
String answer1 = Text.getText();
Scanner sc = new Scanner(answer1);
int x = 0;
while (x < 1) {
try {
if (sc.next() == "true") {
f.remove(labelM);
x++;
}
} catch (Exception e) {
System.out.println("Something went wrong");
}
}
}
}
我想把它去掉 LabelM
当jtext字段中的输入为“true”时,我只是想学习 JFrame
这是我第一次用它工作。有没有更好的方法从电脑扫描 JFrame
?
1条答案
按热度按时间snz8szmq1#
您可能希望使用documentlistener,每当字段的文本发生更改时,它就会触发方法。当前示例只获取一次文本(在显示
JFrame
这一点永远不会改变,因为您使用了错误的方法/运算符进行比较string
您应该使用的java对象equals
,或类似的变体contains
请参阅此处或此处了解更多信息。还有其他几点(我可能听起来像一张破唱片):
不要使用
null
/AbsoluteLayout
而是使用适当的布局管理器不要打电话
setBounds()
或者setSize()
在组件上,如果使用正确的布局管理器,这将为您处理呼叫
JFrame#pack()
在使用LayoutManager
所有swing组件都应该通过SwingUtilities.invokeLater
下面是一个简单地隐藏或显示JLabel
当单词true在JTextField
:testapp.java文件:
魔法发生在
checkForInput
由DocumentListener
连接到JTextField
```public void checkForInput() {
if (textField.getText().toLowerCase().contains("true")) {
labelM.setVisible(false);
} else {
labelM.setVisible(true);
}
}