java - java中的字体类引用

标签 java reference

我想问一些非常基本的问题:

当我编写这段代码时:

font = new Font("Calibri", Font.ITALIC, 10);
gr.setFont(font);
gr.drawString("mpla mpla",x,y);
font = new Font("Sherif", Font.BOLD, 16);
gr.drawString("mpla mpla part 2",x,y);

我意识到我的字体在第二个拉绳中不会按顺序改变 为了工作,我必须在它之前放置另一个 gr.setFont(font);

为什么会发生这种情况?我的意思是,我有一个 Font 对象的引用,并且它被设置为在我的 Graphics 上下文中使用。当我将一个新对象重新分配给我的字体引用时,当 Graphics 尝试第二次使用它时,它通常应该可以工作!但事实并非如此..

提前致谢

最佳答案

您似乎对自己正在做的事情有误解。

在这一行:

font = new Font("Calibri", Font.ITALIC, 10);

您将对新创建的 Font 对象的引用分配给变量 font

然后,使用 gr.setFont(font); 将该引用传递给 gr.setFont() 方法。您传递引用,即该 Font 对象的“位置”。您不需要告诉 gr.setFont() 关于变量 font 的任何信息,您只需告诉它存储在其中的值。

在倒数第二行 font = ... 中,您将对另一个新 Font 对象的引用分配给变量 font >。由于 Graphics 对象不知道 font 变量本身,因此它(当然)根本不受该更改的影响!

你可以这样想:

  • 我在一张纸上写了一个数字(假设数字是 3)
  • 我给你看那张纸并请你记住号码
  • 我擦掉纸上的数字并在上面写下 5
  • 我问你记住了哪个数字

关于java - java中的字体类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189340/

相关文章:

c++ - C++11 中引用的使用

Java 机器人类 mouseclick 可以使用浮点值吗?

java - 在 Mac 上使用哪个 Eclipse 版本? (碳或 cocoa )

python - 对 python 中已删除对象的引用

c++ - std::reference_wrapper 的实现

c# - 检查编译时是否存在引用

c++ - 在默认构造函数签名中返回对象与引用

java - Android AsyncTask 似乎在 onPreExecute 之后停止

java - 获取准备好的语句的可能数据类型 - Java DB2

java - 随机游走 10x10 网格阵列