2016-11-19 79 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的文本。 –

相关问题