這里我有我的程序,但是,當(dāng)我嘗試調(diào)整面板大小時(shí),我的文本就消失了?此外,如何在文本下繪制一條粗綠線,即使在調(diào)整大小時(shí)它也會保留在文本下方,我很無能?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貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
我怎樣才能在我的文本下繪制一條粗綠線,即使在調(diào)整大小時(shí)它也會保留在文本下方,我
如果您進(jìn)行自定義繪畫,那么您需要遵循的基本步驟如下:
使用 getFonTMetrics() 方法獲取 Graphics 對象的 FontMetrics
使用 getStringBounds(...) 方法獲取文本矩形
使用 Graphics2D 對象的 setStroke(...) 方法設(shè)置要繪制的線條的粗細(xì)
使用 Graphics2D 對象的 drawLine(...) 方法根據(jù)文本位置和字符串邊界中的 Rectangle 信息繪制線條
顯示文本的一個(gè)更簡單的解決方案是使用JLabel
.?然后您可以設(shè)置標(biāo)簽的邊框。
請注意,使用 JComponent 進(jìn)行自定義繪制時(shí),您還負(fù)責(zé)清除組件的背景。所以該方法中的第一幅畫應(yīng)該是:
g2.setColor(?getBackground()?); g2.fillRect(0,?0,?getWidth(),?getHeight());
大多數(shù)人使用 JPanel 進(jìn)行自定義繪畫,那么您可以使用:
super.paintComponent(g);
以確保背景已清除。
添加回答
舉報(bào)
0/150
提交
取消