0

タイトルバーがJPanelのピクセルと重なるのはなぜですか。ここにいくつかのコードがあります:

protected void init() {
    this.setContentPane(new MyPanel());
    this.setSize(915, 725);
    this.setVisible(true);
}

class MyPanel extends JPanel {

    @Override
    public void paintComponent(Graphics _g) {
        super.paintComponent(_g);
        Graphics2D g = (Graphics2D)_g;

        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        Font font = new Font("Monospaced", Font.PLAIN, 14);

        g.setFont(font);
        g.setColor(Color.red);

        for(int x=0; x<60; x++) {
            for(int y=0; y< 50; y++) {
                g.drawString("█", x*15, 0);
            }
        }
    }
}

JFrameにJPanelを追加し、y=0で文字列を描画しました。

4

2 に答える 2

1

y = 0はパネルの上部にあり、座標は下に向かって伸びます。高さ 20 ピクセルのテキスト行をパネルの上部に表示する場合は、 で描画する必要がありますy = 20。より一般的には、FontMetricsクラスを使用してテキスト行の高さを決定し、適切なオフセットを使用できます。

FontMetrics metrics = _g.getFontMetrics(font);
int lineHeight = metrics.getHeight();

現在のコードでは、1 ピクセル グリッドのセルに文字 (高さ 20 ピクセル程度) を描画しています。これは、キャラクターが互いに大きく重なることを意味します。文字に十分なスペースを与えるために、ここでは 1 よりもはるかに大きな値でループをステップ実行する必要があります。

于 2012-06-25T19:56:51.963 に答える
0
于 2012-06-25T19:58:11.560 に答える