如何更改网格大小(使用JTextField)

时间:2014-03-28 23:17:15

标签: java swing jtextfield

所以我的窗户上有一堆网格,我有一个JTextField,我想写一个数字,比如说

20,在文本字段中,20会将我的网格大小更改为20,依此类推。

在这里你看到我把它设置为30,我可以将它设置为任何数字,但就像我说我想成为

我在运行程序后在文本字段中输入数字时能够更改/设置数字。

这是我的Grids类而不是主类,在我的主类中我创建了文本字段和

这样。我的主要内容中还有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]);
       }
   }

}

2 个答案:

答案 0 :(得分:2)

我会使用JSpinnerChangeListener

阅读How to Use Spinners上Swing教程中的部分,了解更多信息和示例。

答案 1 :(得分:1)

所以动作者可能不会工作。这会将点击事件压缩为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
        }
    });