为了账号安全,请及时绑定邮箱和手机立即绑定

JComponent 调整大小时消失?

JComponent 调整大小时消失?

皈依舞 2023-12-30 15:54:42
这里我有我的程序,但是,当我尝试调整面板大小时,我的文本就消失了?此外,如何在文本下绘制一条粗绿线,即使在调整大小时它也会保留在文本下方,我很无能?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);            }        });    }}
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

我怎样才能在我的文本下绘制一条粗绿线,即使在调整大小时它也会保留在文本下方,我

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

  1. 使用 getFonTMetrics() 方法获取 Graphics 对象的 FontMetrics

  2. 使用 getStringBounds(...) 方法获取文本矩形

  3. 使用 Graphics2D 对象的 setStroke(...) 方法设置要绘制的线条的粗细

  4. 使用 Graphics2D 对象的 drawLine(...) 方法根据文本位置和字符串边界中的 Rectangle 信息绘制线条

显示文本的一个更简单的解决方案是使用JLabel. 然后您可以设置标签的边框。

请注意,使用 JComponent 进行自定义绘制时,您还负责清除组件的背景。所以该方法中的第一幅画应该是:

g2.setColor( getBackground() );
g2.fillRect(0, 0, getWidth(), getHeight());

大多数人使用 JPanel 进行自定义绘画,那么您可以使用:

super.paintComponent(g);

以确保背景已清除。


查看完整回答
反对 回复 2023-12-30
  • 1 回答
  • 0 关注
  • 50 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信