2014-03-28 76 views
-2

所以,我有一堆我的窗口,网格的,我有一个JTextField,我想写一个数字,说如何更改我的网格大小(使用JTextField中)

20,在文本字段和20将将我的网格大小更改为20等等。

这里你可以看到我已经将它设置为30,我可以将其设置为任意数字,但就像我说我想成为

能够改变/设置数量,当我键入的文本字段后我运行该程序。

这是我的网格类,而不是主类,在我的主类,我创建的文本字段和

这样。我也有我的actionPreformed在我的主要所以我需要在我的actionPreformed

(如有必要)?

所以我的问题是运行程序是如何在文本字段中写

号(10,20,30任何数字),并能够根据我输入的数量来改变我的网格大小后?

另外我需要在我的actionPreformed(如有必要)?

电网类:

protected int gridSize = 30; // how many grids 
public Grids(ghetto ttt ) 
{ 
    setLayout(new GridLayout(gridSize, gridSize)); 
    theSquares = new Marker[gridSize][gridSize]; 
    for (int i=0; i<gridSize; i++) 
    { 
     for (int j=0; j<gridSize; j++) 
     { 
      theSquares[i][j] = new Marker(gridSize , this); 
      add(theSquares[i][j]); 
     } 
    } 

} 
+0

为此使用'JSpinner'。例如。正如所见[这里](http://stackoverflow.com/a/10021773/418556)。 –

回答

1

所以一个ActionListener可能不会工作。这将点击事件压缩成ActionEvents。你可以做的是添加一个文档监听器。见Value Change Listener to JTextField

在你的主程序,你会怎么做

textField.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      // Whatever 
     } 
    }); 

你做

textField.getDocument().addDocumentListener(new DocumentListener() { 
     @Override 
     public void removeUpdate(DocumentEvent arg0) { 
      //whatever 
     } 
     @Override 
     public void insertUpdate(DocumentEvent arg0) { 
      //whatever 
     } 
     @Override 
     public void changedUpdate(DocumentEvent arg0) { 
      //whatever 
     } 
    }); 
+0

这是什么在我的主要类下的行动PrePreformed? – user3412136

+0

不在actionPerformed。这必须以与actionListener相同的方式附加到您的jtextfield。 –

+0

恩,不知道我是否理解,你介意在代码中写这部分? – user3412136

2

我会用一个JSpinnerChangeListener

阅读Swing教程中有关How to Use Spinners的部分以获取更多信息和示例。

相关问题