首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JComponent在调整大小时消失?

JComponent在调整大小时消失?
EN

Stack Overflow用户
提问于 2019-10-25 20:49:17
回答 1查看 89关注 0票数 0

嗨,我是java的初学者,这里有我的程序,但是,当我尝试调整面板大小时,我的文本就消失了?此外,我怎样才能在我的文字下画一条厚厚的绿线,即使在调整大小的时候,它也会留在文本之下,我是非常无知的。

代码语言:javascript
运行
复制
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;

public class Groovy
{

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame= new JFrame("Shearing Word Demo");

                frame.setResizable(true);
                frame.setSize(new Dimension(500,250));
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Toolkit it=Toolkit.getDefaultToolkit();
                Dimension d=it.getScreenSize();
                int w=frame.getWidth(), h=frame.getHeight();
                frame.setLocation(d.width/2-w/2, d.height/2-h/2);
                frame.add(new JComponent(){
                    @Override public void paintComponent(Graphics g){
                        Graphics2D g2=(Graphics2D) g;
                        g2.setColor(Color.magenta);
                        g2.setFont(new Font("Comic Sans MS",Font.BOLD,44));
                        g2.drawString("Feeling Groovy!", 110,125 );
                    }
                });
                frame.setVisible(true);
            }
        });
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 22:27:02

我如何在我的文本下画一条绿色的线,即使在调整大小的时候,它也会在文本下面。

如果您进行自定义绘图,那么您需要遵循的基本步骤如下:

  1. 使用FontMetrics ()方法获取Graphics对象的getFonTMetrics
  2. 使用getStringBounds(.)获取矩形文本方法
  3. 使用setStroke(.)方法来设置要绘制的线条的厚度。
  4. 使用drawLine(.)方法Graphics2D对象根据文本的位置和字符串边界中矩形的信息绘制线条。

显示文本的一个更简单的解决方案是使用JLabel。然后,您可以设置标签的边框。有关更多信息,请阅读有关如何使用边界的Swing教程中的部分。

注在使用JComponent进行自定义绘图时,您还负责清除组件的背景。因此,方法中的第一幅画应该是:

代码语言:javascript
运行
复制
g2.setColor( getBackground() );
g2.fillRect(0, 0, getWidth(), getHeight());

大多数人使用JPanel进行自定义绘画,然后您只需使用:

代码语言:javascript
运行
复制
super.paintComponent(g);

以确保背景被清除。

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

https://stackoverflow.com/questions/58565554

复制
相关文章

相似问题

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