gpt4 book ai didi

java - JComponent 调整大小时消失?

转载 作者:行者123 更新时间:2023-12-01 22:26:31 24 4
gpt4 key购买 nike

嗨,我是java初学者,这里我有我的程序,但是,当我尝试调整面板大小时,我的文本就消失了?此外,如何在文本下绘制一条粗绿线,即使在调整大小时它也会保留在文本下方,我很无能?

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);
}
});
}
}

最佳答案

how can i draw a thick green line under my text which will stay under the text even when resizing, I

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

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

显示文本的一个更简单的解决方案是使用JLabel。然后您可以设置标签的边框。阅读 Swing 教程中关于 How to Use Borders 的部分了解更多信息。

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

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

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

super.paintComponent(g);

确保背景被清除。

关于java - JComponent 调整大小时消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58565554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com