首次發佈爲SO通常具有我需要的內容,但無法在任何地方找到它。Java - 文本框文本不可見
獨立工作斯坦福大學的CS106A,我正在給顯示器添加一個文本框。
該文本框沒有VISUALLY顯示任何更新。它要麼保持空白,要麼保留在文本中,如果.setText(「some text」);用來。但踢球者是文本框,它應該是其他所有東西,它看起來並不像它。
只是爲了澄清一些混淆,我的問題是之前我點擊圖形按鈕或使用回車鍵。我可以在空白處輸入任何我想要的東西,但我看不到它。我可以完全或部分刪除任何預設文本並鍵入新文本,我看不到任何內容已被刪除或輸入。
一旦激活e.getActionCommand()系統將打印輸出或刪除的內容,該部分完美工作。
會發生什麼:
- 文本框接受輸入(但不顯示新的文本,不會改變任何現有的文本)
- e.getActionCommand()的作品,並返回輸入的文本
- e.getSource()作品並返回輸入的文本
如:
類型「測試」到文本框中
文本在視覺上繼續顯示「輸入名稱」
name.getText()返回「測試」
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;
}
我不使用該庫,但有一個問題是在這裏:'else if(e.getActionCommand()==「Graph」){'。不要使用'=='或'!='比較字符串。改爲使用「equals(...)」或「equalsIgnoreCase(...)」方法。理解'=='檢查兩個*對象引用*是否相同,而不是你感興趣的。另一方面,方法檢查兩個字符串是否具有相同順序的相同字符,這就是這裏很重要。現在我不認爲這是導致你目前的問題,但它肯定會導致*未來*的問題,所以你會想要解決它。 –
良好的捕捉,是的,這將是一個問題,但不會導致這個特定的問題。 – cVer