Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在paintComponent中绘制另一个组件_Java_Swing - Fatal编程技术网

Java 在paintComponent中绘制另一个组件

Java 在paintComponent中绘制另一个组件,java,swing,Java,Swing,我使用Java教程中的SwingPaintDemo2: 我这样修改它: public void paintComponent(Graphics g) { super.paintComponent(g); // Draw Text g.drawString("This is my custom Panel!",10,20); JLabel c = new JLabel("Label"); c.paint(g); } g、 拉绳很好用。但是如何使用此方

我使用Java教程中的SwingPaintDemo2:

我这样修改它:

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // Draw Text
    g.drawString("This is my custom Panel!",10,20);

    JLabel c = new JLabel("Label");
    c.paint(g);
}

g、 拉绳很好用。但是如何使用此方法绘制JLabel?它不起作用。

我想你必须给你的标签设定一个尺寸

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // Draw Text
    g.drawString("This is my custom Panel!",10,20);

    JLabel c = new JLabel("Label");
    c.setBounds(0, 0, 400, 30);
    c.paint(g);
}

请参阅上的
LabelRenderTest.java
源代码。标签最终会绘制到屏幕上,但在显示之前会绘制到
buffereImage

源代码的重要行是

textLabel.setSize(textLabel.getPreferredSize());

将示例、Html和图像放在一起+1@mKorbel“一幅图像能描绘千言万语”(通常会获得几张得票)。HTML只是因为我无法计算每个文本元素的确切位置我不能把你的人身攻击看作是对我优秀的、令人兴奋的、不可互换的,不管怎样。。。我说英语的形式:-),当我读到你的一些编辑(或其他本地说话者的编辑)时,一定有人笑死了:-)你应该尽量避免撞击传递的
图形
对象。相反,使用一个副本
Graphics gCopy=g.create()
.c.setBounds-我甚至没有想过。非常感谢。