0
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でそれを行う最良の方法は何ですか?. いくつかのコードを投稿してください...

4

2 に答える 2

3

いくつかのJTable機能を使用できます。

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 チュートリアルのその他の例

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;
    }
}

一般に、テーブルの使用方法に関するドキュメントが大いに役立ちます。

于 2012-05-17T18:03:46.457 に答える
1

カスタムスイングコンポーネントを開発することをお勧めします。次に、このコンポーネントを JFrame に追加します。

カスタム コンポーネントの作成は、思ったよりもずっと簡単です。JComponent または Component を拡張する新しいクラスを作成し、paint(Graphics)メソッドをオーバーライドするだけです。

また、paint メソッドでは for ループを使用して、Graphicsメソッドなどを使用してグリッドを描画するだけです。非常に簡単で柔軟です。drawLinefillRect

これで良いスタートが切れ、必要に応じてサイズ変更やスクロールなどを行うことができます。

于 2012-05-17T18:18:51.597 に答える