这些天我做了很多 Java,但主要是数据处理、算法方面的事情,并且非常强调不是图形或 UX 的东西。我对高强度视频游戏的想法是 8 位 Pong。
我在应用程序中遇到过这段代码。我无法弄清楚这paintComponent是要解决什么问题。
JPasswordField pass = new JPasswordField(35) {
@Override
protected void paintComponent (Graphics g) {
g.setColor(getBackground());
Rectangle r = g.getClipBounds();
g.fillRect (0, 0, r.width, r.height);
super.paintComponent(g);
}
};
它看起来像它试图填补与当前背景色的一些地区,但这里的“剪辑范围”应该是,为什么那会不会是已经发生的事情,是我的经验之外。在源文件的其余部分中搜索“剪辑”一无所获。
代码相当陈旧——在 Java 1.5 时代编写——但该应用程序一直在当前的 JRE 下运行(在撰写本文时为 Java 8 和 9)。从未报告过有关密码字段的任何视觉异常。该字段显示在其他乏味的 JPanel 中。
代码的作者早已离开公司。实际上,在我来之前,作者的替代者已经离开了公司。我不相信参与这部分代码的任何人仍然在这里工作,所以没有人问。(我被要求为这样的团队做很多夹击。)我发现他们的很多旧代码都是货物崇拜式的,因为他们从其他地方的某个随机项目中复制了它公司,所以这可能更相似。
本着“用棍子捅一下,看看符”,我做了一些非常基本的摆弄:更换getBackground()用Color.MAGENTA,看是否在该软件的任何转向猛烈粉红色,完全移除匿名子类,看看是否出了什么梨形,等等。似乎没有任何更改在 Windows 上产生任何明显的差异。
当然,没有证据与缺乏证据而这一切,我不能证明它是不是需要一些平台上的某个地方。但是我想添加一条评论,说明旧的作者可能一直在尝试做的事情......
慕仙森
相关分类