我想创建16*16的按钮组,这段代码哪里错了?for(;i<16;i++){ for(;j<16;j++){ JButton button=new JButton(letter); System.out.println(i); frame.add(button); } }
时间: 2023-07-15 19:14:17 浏览: 93
你的代码中有两个问题:
1. 变量 `j` 的初始值没有被重置为0,所以第二个循环就不会执行。你可以在第一个循环的开头加上 `j = 0;` 来解决这个问题。
2. 变量 `letter` 没有被更新,每个按钮都会显示相同的内容。你需要为每个按钮设置不同的内容,可以使用一个嵌套的循环来生成不同的字符,例如:
```java
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
char letter = (char) ('A' + i*16 + j); // 根据行列生成不同的字符
JButton button = new JButton(String.valueOf(letter));
frame.add(button);
}
}
```
这样就会生成一个16x16的按钮组,每个按钮上显示不同的字符。
相关问题
我想创建16*16的按钮组,这段代码哪里错了 int i=0,j=0; char letter='a'; for(;i<16;i++){ for(;j<16;j++){ letter=(char)('a'+i*16+j); JButton button=new JButton(); frame.add(button); } }
你的代码中,问题在于第二个for循环的`j`没有被重置为0。第一个for循环结束后,`j`的值变成了16,第二个for循环就不会再次执行了。因此,你可以将第二个for循环中的`j`初始化为0即可解决这个问题。
以下是修改后的代码:
```
int i=0,j=0;
char letter='a';
for(;i<16;i++){
for(j=0;j<16;j++){
letter=(char)('a'+i*16+j);
JButton button=new JButton();
frame.add(button);
}
}
```
现在,你应该能够成功创建一个16*16的按钮组了。
QVector <QToolButton *> vToolBtn; for(int i = 0 ; i < 4 ; i++) { //设置头像 QToolButton * btn = new QToolButton; //设置文字 btn->setText(nameList[i]); //设置头像 QString str = QString(":/images/%1.png").arg(i+1); btn->setIcon(QPixmap(str)); //设置头像大小 btn->setIconSize( QPixmap(str).size() ); //设置按钮风格 透明 btn->setAutoRaise(true); //设置文字和图片一起显示 btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); //加到 垂直布局中 ui->vLayout->addWidget(btn); //容器保存住9个按钮,方便以后再次操作 vToolBtn.push_back(btn); } for(int i=0; i<9; i++){ exchangeStatue[i] = false; }
这段代码创建了一个包含4个QToolButton的向量vToolBtn,并使用一个for循环为每个按钮设置了图标、文字和风格,并将它们添加到垂直布局中。每个按钮的图标都是从一个文件夹中加载的,文件名为"数字.png",在这个例子中,数字从1到4。每个按钮的风格设置为Qt::ToolButtonTextBesideIcon,这意味着它们将文字和图标一起显示。接下来,使用另一个for循环,将exchangeStatue数组的每个元素初始化为false。这个数组的作用不太清楚,可能在后面的代码中有用到。
阅读全文