再次晚上好! 我现在已经尝试了几天来创建一个方法/类,它将在Netbeans GUI-Builder界面中自动生成一个X * Y JPanel网格。事情是,我已尝试过每一个YouTube视频或帖子来实现它,但它们似乎都不起作用。 我已经创建了一个扩展JPanel类的类,但是面板(带有彩色背景)不会出现在gui中,尽管我已经进行了所有必要的对齐..是否有人可以帮助这个...?提前谢谢!
编辑::我已经清除了为此创建的类的代码,因为它们不起作用..我有2个文本框和一个按钮,我想用它生成一个JPanels的“动态”表。一个文本框用于宽度,一个用于表格的高度。当我可以访问我的笔记本电脑时,我会重写以前的代码并发布它! EDIT2 ::所以我回到了我的笔记本电脑,我按照评论中的说明尝试用矩形创建它。所以我做了。这是我的班级:
package worldedittor.gui.grid;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Rectangle;
public class DrawingCanvas extends Canvas {
private int width, height;
Rectangle[][] recsTable = new Rectangle[this.width][this.height];
public DrawingCanvas() {
}
public void setNewDimension(int width, int height) {
this.setBackground(Color.white);
this.setSize(width*32+1, height*32+1);
this.width = width;
this.height = height;
createGrid();
}
public void createGrid() {
for(int y=0;y<this.height;y++) {
for(int x=0;x<this.width;x++) {
this.getGraphics().setColor(Color.black);
this.getGraphics().drawRect(x*32, y*32, 32, 32);
}
}
}
}
现在唯一的问题是,当我按下我的按钮时,画布出现,但网格没有出现。实际上,它“尝试”加载但然后擦除..如果我再次按下按钮,网格将成功绘制。这是按钮的代码:
private void applyBtnAction(java.awt.event.ActionEvent evt) {
int enteredWidth = Integer.parseInt(worldWidth.getText());
int enteredHeight = Integer.parseInt(worldHeight.getText());
drawingCanvas.setNewDimension(enteredWidth, enteredHeight);
}
对此有何帮助?再次感谢!在此渲染过程之后,我将按照说明使用contains
方法。
EDIT3 ::所以我有点修复它。解决方案真的很奇怪。我知道我必须再次编写paint(Graphics g)方法,但是由于我重写它,它可以工作。这是我的修复:
....
public void setNewDimension(int width, int height) {
this.setBackground(Color.white);
this.setSize(width*32+1, height*32+1);
this.width = width;
this.height = height;
//createGrid();
}
@Override
public void paint(Graphics g) {
createGrid();
}
....