Java - 文本框文本不可见

时间:2017-05-03 02:25:19

标签: java

首次发布为SO通常具有我需要的功能,但无法在任何地方找到它。

独立处理斯坦福大学的CS106A,我在显示器上添加了一个文本框。

文本框 VISUALLY 不显示任何更新。如果.setText(“some text”),它要么保持空白,要么保留文本。用来。但是踢球者是文本框做了它应该做的其他事情,它看起来不像它。

为了澄清一些困惑,我的问题是之前我点击图表按钮或使用回车键。我可以在空白处输入任何我想要的东西,但我看不到它。我可以完全或部分删除任何预设文本并输入新文本,我看不到任何内容已被删除或输入。

一旦激活e.getActionCommand()系统,就会打印出所输入或删除的内容,该部分完美无缺。

会发生什么:
- 文本框接受输入(但不显示新文本,也不更改任何现有文本)
- e.getActionCommand()工作并返回输入的文本
- e.getSource()工作并返回输入的文本

例如:
在文本框中键入“测试”
文本框直观地继续显示“输入名称”
name.getText()返回“testing”

import acm.program.*;
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;

public class NameSurfer extends ConsoleProgram implements NameSurferConstants {

private static final int BUTTON_FONT_SIZE = 24;
private static final String BUTTON_FONT = "Serif";

public void init() {

    setSearchBar();     

}

private void setSearchBar() {

/* This method sets up the bottom search bar and interactors */


JLabel nameText = new JLabel("Name: ");
nameText.setFont(new Font(BUTTON_FONT, Font.PLAIN, BUTTON_FONT_SIZE));
add(nameText,SOUTH);

name = new JTextField(10);
name.addActionListener(this);
name.setActionCommand("Graph");
name.setFont(new Font(BUTTON_FONT, Font.PLAIN, BUTTON_FONT_SIZE));
name.setText("Enter a name");
add(name,SOUTH);

graph = new JButton("Graph");
graph.setFont(new Font(BUTTON_FONT, Font.PLAIN, BUTTON_FONT_SIZE));
add(graph, SOUTH);

clear = new JButton("Clear");   
clear.setFont(new Font(BUTTON_FONT, Font.PLAIN, BUTTON_FONT_SIZE));
add(clear, SOUTH);

addActionListeners();

}


public void actionPerformed(ActionEvent e) {

    if( e.getSource() == clear){
        println("Testing clear");
    }else if(e.getActionCommand() == "Graph"){
        println(name.getText());
        name.setText("Enter a name");           
    }

}

private JButton clear;
private JButton graph;
private JTextField name;

}

1 个答案:

答案 0 :(得分:1)

我认为你的问题在这里:

else if(e.getActionCommand() == "Graph"){
        println(name.getText());
        name.setText("Enter a name");           
    }

此行name.setText("Enter a name");在触发ActionEvent时将文字设置为"Enter a name",因为setActionCommand始终等于Graph(假设您已应用修正@气垫船全的鳗鱼)。

name.getText()正确的原因是因为它在您在动作侦听器中调用name.setText("之前返回该值,但随后立即将其更改回"Enter a name" name.setText("Enter a name");

因此,要解决此问题,请注释掉或删除该行并再次测试您的代码:

else if(e.getActionCommand() == "Graph"){
        println(name.getText());
        //name.setText("Enter a name");           
    }

然后你需要考虑一下你真正想要如何重置文本字段,以及何时应该重置它。