【问题标题】:Where is the Java TextArea paint method implemented?Java TextArea 绘制方法在哪里实现?
【发布时间】:2011-11-03 04:28:00
【问题描述】:

我正在寻找 Java TextArea 组件 (java.awt.TextArea) 的 paint 方法实现。

我已经阅读了该类及其超类 (java.awt.TextComponent) 的源代码,但没有找到 public void paint(Graphics g) 方法实现,我认为这意味着该类将使用默认的 Component#paint(Graphics)执行,没有意义。我在这里错过了什么吗? TextArea 组件是如何绘制的?

【问题讨论】:

  • 既然你有源代码,为什么不看看Component#paint(Graphics) 方法,看看JTextArea 是如何在不定义自己的paint 方法的情况下绘制的呢?跨度>
  • @Shakedown 我确实查看了java.awt.Component 源,而paint 方法是空的。
  • 哎呀,对不起,我的意思是JComponent,而不是Component

标签: java awt textarea paint


【解决方案1】:

TextArea 是 AWT 组件,而不是 Swing 组件。因此,它是所谓的重量级组件,这意味着它实际上是由底层平台/操作系统的本机组件(即 Windows/Gnome/Motif 组件,取决于操作系统)实现的,称为组件的对等体。因此,绘画是由平台的本机小部件完成的,而不是由组件完成的。

【讨论】:

【解决方案2】:

AWT Components 是上个千年的恐龙,只有back-compactible 存在并且仍然存在,请/最好将其更改为Todays JComponents,所有以“J”开头的@987654321 列表@,但是对于 Swing 的 JComponents 是有 paintComponent(Graphics g) 而不是 paint(Graphics g)

paint 方法仍然存在,但用于在 XxxXxxUI 中进行最深的绘制,例如 MetalButtonUI,但不适用于绘制图像/线条/文本......并且尽量避免使用 similar examples from year 2000 和另一个非常古老的示例,这真的是Java6的Swing中自定义绘画的错误实现,

这是您需要的tutorialJava6 API

这个论坛有很多关于Painting Something in JComponents的帖子

编辑:如果你想画一些东西,那么寻找JLabel(默认为透明),最好的JComponent 用于2D Graphicshere 的示例,并且仅使用paintComponent() 方法

【讨论】:

  • 我了解AWT Components 已被较新的Swing Components 过时。我希望能够看到JTextAreapaint 方法(这同样难以捉摸)。我希望编写自己的TextArea 类,用于基于 Amazon Kindle Java 1.4.2 的 KDK,因为 KDK 的实现有些损坏。我想使用 Java API 的实现作为参考。
猜你喜欢
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2011-09-02
  • 2016-03-02
  • 2012-03-05
相关资源
最近更新 更多