gpt4 book ai didi

java - setFont 不按此顺序工作

转载 作者:行者123 更新时间:2023-11-29 03:25:55 26 4
gpt4 key购买 nike

为什么这样写时setFont不起作用?我想绘制消息(字体粗体,大小 20),并在其下方绘制一个带有蓝色小数字的乘法表。

//this is a separate class
public class Start {
public static void main(String[] args){
GUI gui = new GUI();
}
}

public class GUI extends JFrame{
public GUI(){
add(new DrawTable());

setTitle("Multiplication table");
setSize(240, 280);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
}
}

class DrawTable extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);



this.setBackground(Color.WHITE);
g.setColor(Color.BLUE);
g.setFont(new Font("Times", Font.PLAIN, 11));
for(int i = 1, j = 110; i < 10; i++, j += 15){
g.drawString("" + i, 20, j);
}
for(int i = 1, j = 50; i < 10; i++, j += 20){
g.drawString("" + i, j, 80);
}
for(int i = 1, j = 110; i < 10; i++, j += 15){
for(int k = 1, l = 50; k < 10 ; k++, l += 20){
if((i * k) < 10){
g.drawString("" + i *k , l, j);
}else{
g.drawString("" + i * k, l - 6, j);
}
}
}

//those are the lines im talking about

setFont(new Font("font1", Font.BOLD, 20));
FontMetrics fm = g.getFontMetrics();
int x = (getWidth() / 2) - (fm.stringWidth("Multiplication table"))/2;
g.drawString("Multiplication table", x, 50);
}
}

这只有在我将这四行放在 super.paintComponent(g) 下时才有效,然后消息是黑色、粗体和 20,数字是小的和蓝色的,但如果我把 4线条像这里一样,都是小而蓝的,为什么?

最佳答案

您没有在评论下的 Graphics 变量 g 上调用 setFont(...)。要使字体正常工作,它应该是:

g.setFont(...);

即改变

setFont(new Font("font1", Font.BOLD, 20));
FontMetrics fm = g.getFontMetrics();
int x = (getWidth() / 2) - (fm.stringWidth("Multiplication table"))/2;
g.drawString("Multiplication table", x, 50);

到:

g.setFont(new Font("font1", Font.BOLD, 20));
FontMetrics fm = g.getFontMetrics();
int x = (getWidth() / 2) - (fm.stringWidth("Multiplication table"))/2;
g.drawString("Multiplication table", x, 50);

关于java - setFont 不按此顺序工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003128/

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