首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JFrame上用java绘制1024跨1024网格单元?

如何在JFrame上用java绘制1024跨1024网格单元?
EN

Stack Overflow用户
提问于 2012-05-18 01:55:46
回答 2查看 2.3K关注 0票数 0
代码语言:javascript
复制
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JPanel;

public class Grid extends JComponent
{

    public void paint(Graphics g){

        super.paintComponent(g);
        Graphics2D graphics = (Graphics2D) g;
        int w = 1024*2;
        int h = 1024*2;

        for(int i=0; i<1024; i++)
        {
            graphics.drawLine(i, 0, i, 1024);
            //graphics.setColor(Color.red);

        }

        for(int j=0; j<1024; j++)
        {
            graphics.drawLine(0, j, 1024, j);
        }

    }

}

我需要绘制1024交叉1024个单元格和颜色几个单元格。单元格应该显示在JFrame上。在java中做这件事的最好方法是什么?请发布一些代码...

EN

回答 2

Stack Overflow用户

发布于 2012-05-18 02:03:46

您可以使用一些JTable功能:

代码语言:javascript
复制
class CellCoords{
    public int x, y;
    public CellCoords(x, y){
        this.x = x; this.y = y;
    }
}
TableModel dataModel = new AbstractTableModel() {
    public int getColumnCount() { return 1024; }
    public int getRowCount() { return 1024;}
    public Object getValueAt(int row, int col) { return new CellCoords(row, col); }
};
JTable table = new JTable(dataModel);

更多来自Swing Tutorials的示例

代码语言:javascript
复制
public class ColorRenderer extends JLabel
                           implements TableCellRenderer {
    ...
    public ColorRenderer(boolean isBordered) {
        this.isBordered = isBordered;
        setOpaque(true); //MUST do this for background to show up.
    }

    public Component getTableCellRendererComponent(
                            JTable table, Object color,
                            boolean isSelected, boolean hasFocus,
                            int row, int column) {
        // Do things based on row and column to decide color
        Color newColor = (Color)color;
        setBackground(newColor);

        return this;
    }
}

一般来说,如何使用表格文档会有很大帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-05-18 02:18:52

我建议开发一个自定义的swing组件。然后将此组件添加到JFrame。

只需创建一个扩展JComponent或组件的新类并覆盖paint(Graphics)方法。

这给了你一个好的开始,然后你可以根据需要调整大小,滚动等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10640953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档