【发布时间】:2013-02-17 03:52:25
【问题描述】:
我在将整数从一个类正确传递到另一个类时遇到问题。
我正在创建一个 GUI,用户可以在文本字段中输入一个数字来调整 JPanel 中网格的大小。
如果我像下面这样用普通的 int 编写它,它就可以正常工作,
public int getGridSize() {
return 6;
}
但是当我尝试更改代码时,它从文本字段中获取字符串(字段中的默认文本是数字“12”),如下所示。
private void initComponents() {
gridPanel1 = new lizasummerschol.GridPanel();
gridSize = new javax.swing.JTextField();
gridSize.setText("12");
gridSize.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
gridSizeActionPerformed(evt);
}
});
private void goBActionPerformed(java.awt.event.ActionEvent evt) {
size = Integer.parseInt(gridSize.getText());
gridPanel1.executeUserCommands("reset");
goB.setText("s "+size);
}
public void setGridSize() {
this.size = size;
}
public int getGridSize() {
if (this.size > 0) {
return this.size;
}
else {
return 10;
}
}
无论用户输入什么,网格都保持 10x10,就好像它不满足大于 0 的条件一样。 网格在名为 GridPanel 的 JPanel 中生成。这是我认为相关的代码。
package lizasummerschol;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
public class GridPanel extends JPanel implements MouseListener, ActionListener {
GridJApplet myGridJApplet = new GridJApplet();
public int NUMBER_ROWS;
public int NUMBER_COLS;
public static int LEFT = 15;
public static int DOWN = 15;
public static int SIZE = 15;
private int particleColour;
private int fixedness;
private int iteration;
private Graphics bufferGraphics;
private Image offScreenImage;
private Image offScreenImageDrawed;
private Graphics offScreenGraphics;
private Graphics offScreenGraphicsDrawed;
private int [][] particle;
private int [][] fixed;
public GridPanel() {
addMouseListener( this );
reset();
}
//Initialise particle with random colours
private void initialiseRandomly() {
NUMBER_ROWS = NUMBER_COLS = myGridJApplet.getGridSize();
particle = new int[NUMBER_ROWS][NUMBER_COLS];
fixed = new int[NUMBER_ROWS][NUMBER_COLS];
for ( int i=0; i < NUMBER_ROWS; i++ ) {
for ( int j=0; j < NUMBER_COLS; j++ ) {
if( Math.random()*3 < 1 ) {
particle[i][j] = 0 ;
} else if ( Math.random()*3 < 2) {
particle [i][j] = 1 ;
} else {
particle[i][j] = 2 ;
}
fixed[i][j] = 0;
}
}
iteration = 1;
}
解析为整数的字符串是否与整数不同?我的想法是,当小程序初始化时,它应该从 gridSize 中获取“12”,然后当 gridSize 中的文本发生更改(并按下“Go”按钮)时,它将使用新尺寸重绘 GridPanel。
【问题讨论】:
-
这可能不是正确的表达方式,但我的意思是,如果我有一个字符串 myString = 6,然后转到 Integer.parseInt(myString),是否与整数完全相同6,还是有一些细微的差异导致了我的问题。
-
如果你的 String myString = "6",然后你解析它,那么它将是 int 6,只有 int 6,不多也不少。恐怕您的代码和您上面的帖子没有给我们足够的信息来让我们猜测您的问题可能是什么。我怀疑在用户有机会与您的 GUI 交互之前,您可能不是在解析事件侦听器(例如 ActionListener),而是在类的构造函数中解析,但这只是基于不完整信息的愚蠢的 @ssed 猜测。请提供更多信息,以便我们祈祷回答这个问题。
-
类定义会起作用。特别是您定义了
gridSize -
@HovercraftFullOfEels 我在原始问题中添加了更多代码。谢谢你看。现在更有意义了吗?阿什温,我不确定你的意思。
-
还没有。
initialiseRandomly()在哪里被调用?
标签: java string parsing user-interface integer