尝试创建JPanels的动态网格 - Java

时间:2017-10-26 10:49:31

标签: java swing user-interface awt

再次晚上好! 我现在已经尝试了几天来创建一个方法/类,它将在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();
}
....

0 个答案:

没有答案