小编And*_*rás的帖子

使用 Swing 绘制文本

主要问题是我想绘制一个带有几个标签的图形。对于绘图,我使用以下类:

public class Canvas extends JPanel {

    // Lot of other methods

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

        // Other code

        g2.setColor(Style.LIGHT_GREY);
        g2.fillOval(node.getPosition().x, node.getPosition().y, Style.SHAPE_SIZE, Style.SHAPE_SIZE);

        g2.setColor(Style.DARK_GREY);
        g2.setStroke(new BasicStroke(1.5f));
        g2.drawOval(node.getPosition().x, node.getPosition().y, Style.SHAPE_SIZE, Style.SHAPE_SIZE);

        //Draw token
        g2.setColor(Style.DARK_GREY);
        g2.setFont(new Font("Monospaced", Font.PLAIN, 12));
        String token = ((Place)node).getTokens().toString();
        g2.drawString(token, 
                (int) (node.getNodeCenterPosition().x - 3.5*token.length()), node.getNodeCenterPosition().y + CHAR_HEIGHT);

        //Draw label
        g2.drawString("P1", node.getPosition().x-8, node.getPosition().y-8);

        // More code
    }

}
Run Code Online (Sandbox Code Playgroud)

没关系坐标,它们都设置正确。奇怪的行为从这里的最后一个 drawString 开始:

//Draw label
g2.drawString("P1", node.getPosition().x-8, node.getPosition().y-8);
Run Code Online (Sandbox Code Playgroud)

所有以前的代码都paintComponent被调用一次,但这个代码被调用。虽然如果我paintComponent …

java swing jpanel jframe sizing

5
推荐指数
1
解决办法
561
查看次数

标签 统计

java ×1

jframe ×1

jpanel ×1

sizing ×1

swing ×1