【问题标题】:I seem to be painting under the JPanel我好像在JPanel下画画
【发布时间】:2014-02-04 01:01:45
【问题描述】:

我一直在尝试使用 MYSQL 数据库制作一个简单的登录程序,当我添加 JTextField 和 JPasswordField 时,我在 paintComponent 方法下绘制的任何内容似乎都被覆盖了。当我不添加我需要的面板时,我看不到我画的东西的问题就消失了。这是我的代码示例。

public void createWindow(){
    frame.add(this);
    frame.setSize(1200, 720);
    etc.. all the necessary stuff
    //userfield is my JTextField
    panel.add(userfield);
    //This next line is the problem
    frame.add(panel);
}

@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawString("Hello", 0, 0);
}

【问题讨论】:

  • 在我们可以 100% 确定之前需要查看一个可运行的示例......但未能致电 super.paintComponent 对您没有任何好处
  • 您还需要确定哪些代码?实际上,我只是忘记在我的示例中包含它,但它在我的实际代码中。
  • 一个可运行的示例,演示您遇到的问题。任何模棱两可都会引发猜测,这对我们双方来说都是浪费时间
  • 问题似乎是 JPanel 的绘画超出了 paintComponent 方法的作用有什么建议吗?

标签: java swing jpanel paintcomponent


【解决方案1】:

JPanel 默认是不透明的,这意味着它覆盖的任何东西都不会被绘制。

尝试使用JPanel#setOpaque 使JPanel 透明并传递false

【讨论】:

  • 请注意,根据您的示例代码,您将遇到重绘伪影问题(组件被绘制两次),请确保您从 paintComponent 方法中调用 super.paintComponent。 .
猜你喜欢
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
相关资源
最近更新 更多