所以我的窗户上有一堆网格,我有一个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]);
}
}
}
答案 0 :(得分:2)
我会使用JSpinner
和ChangeListener
。
阅读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
}
});