2016-11-19 83 views
-1

確定,所以多數民衆贊成Ive得到是否有可能設置一個JTextField的文本在Swing

jTextField1.setBounds(136, 24, 17, 17); 
jTextField1.setEditable(false); 
jTextField1.setText("x"); 
jTextField1.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 
jTextField1.setHorizontalAlignment(SwingConstants.CENTER); 
jTextField1.setFont(new Font("Dialog", Font.PLAIN, 16)); 
jTextField1.setBackground(Color.WHITE); 
jTextField1.setOpaque(false); 
cp.add(jTextField1); 

[...]

public void actionPerformed(ActionEvent e) { 
if (e.getActionCommand() == "+") { 
plus = true; // [...] 

如果e.getActionCommand()= +我想更改jTextField的文本。那可能嗎?還有什麼替代方法? thx預先

+0

是的,只需在您的JTextField上調用'setText(...)'就可以了,就是這樣。但也不要使用'=='或'!='來比較字符串。改爲使用「equals(...)」或「equalsIgnoreCase(...)」方法。理解'=='檢查兩個*對象引用*是否相同,而不是你感興趣的。另一方面,方法檢查兩個字符串是否具有相同順序的相同字符,這就是這裏很重要。 –

+1

請使標題更多..有用。代碼本身包含答案,因爲它使用'setText' - 因此,對於標題來說,這些代碼很平淡而冗餘,文本*可以被改變。 – user2864740

+0

1)'jTextField1.setBounds(136,24,17,17);'Java GUI必須在不同的操作系統上工作',屏幕大小,屏幕分辨率等等,在不同的區域使用不同的PLAF。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 2)另請參閱此[計算器示例](http://stackoverflow.com/a/7441804/418556)。它使用'ScriptEngine'來評估文本字段中的表達式。 –

回答

-1

編輯:那麼你已經使用了JTextField的setText()方法。爲了能夠從ActionListener的ActionPerformed()方法內訪問JTextField,JTextField將變爲全局的。

的ActionLister和它的代碼看起來是這樣的:

package jTextField; 

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class SetTextOfJTextField extends JFrame implements ActionListener{ 

    boolean plus = false; 
    JPanel panel = new JPanel(); 
    JTextField jTextField1; 

    public static void main(String[] args){ 
     new SetTextOfJTextField(); 
    } 

    public SetTextOfJTextField(){ 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    jTextField1 = new JTextField(10); 

    jTextField1.setEditable(false); 
    jTextField1.setText("x"); 
    jTextField1.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 

    jTextField1.setBackground(Color.WHITE); 

    jTextField1.addActionListener(this); 
    jTextField1.setEditable(true); // this is necessary so the text can be changed by the user! 

    JButton button = new JButton("OK"); 
    button.addActionListener(this); 


    /* configure JFrame/Jpanel*/ 
    panel.add(jTextField1); 
    panel.add(button); 
    this.add(panel); 
    this.pack(); 
    this.setSize(200,200); 
    this.setVisible(true); 
    } 


    public void actionPerformed(ActionEvent e) { 
     System.out.println("ouch! dont click me!"); 
     if (jTextField1.getText().equals("+")) { 
      plus = true; 
      System.out.println("received plus!"); 
      // change text of jTextField1 
      jTextField1.setText("hi i am new text!"); 
     } 
     else{ 
      jTextField1.setText(""); 
     } 
    } 
    } 

現在運行的代碼。如果在文本框中輸入+號,然後按確定,文本將會改變。再次按OK按鈕,文本將被重置。 快樂編碼!

+0

字符串比較應該使用String.equals()方法 –

+0

@mariusisgone添加工作代碼示例,如果點擊按鈕,則更改JTextField的文本。 –

相關問題