【发布时间】:2021-10-27 16:13:31
【问题描述】:
class LaminaFoco extends JPanel{
JTextField cuadro1;
JTextField cuadro2;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
setLayout(null);
cuadro1=new JTextField();
cuadro2=new JTextField();
cuadro1.setBounds(120,10,150,20);
cuadro2.setBounds(120,80,150,20);
add(cuadro1);
add(cuadro2);
LanzaFocos foco=new LanzaFocos();
cuadro1.addFocusListener(foco);
}
private class LanzaFocos extends FocusAdapter{
@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub
String email=cuadro1.getText();
//剩下的代码
由于某种原因,当我运行它时,String email 的值为“”,我不明白为什么。更奇怪的是,它有时也能正常工作。
【问题讨论】:
-
您的代码完全错误,您需要重新开始。绘画方法仅用于绘画,仅用于绘画。 1) 你不应该在 paintComponent() 方法中创建组件。每次重新绘制组件时,都会创建一个新的文本字段。 2)你也不应该创建一个监听器。阅读 Swing tutorial 了解 Swing 基础知识。在
How to Use Text Fields或Using Layout Managers或How to Write a FocusListener上有部分。所有部分都有工作示例。 -
每次绘制面板时,都会创建新字段。难怪你没有从他们那里得到正确的文字。
-
我正在关注一个教程,他们这样做是为了解释事件是如何工作的,我完全复制了他们是如何做到的,但它适用于他们而不是我,完全相同的代码,这就是困扰我的地方。
-
(1-) 那个教程 100% 错误!您已获得正确教程的链接
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。