我有一个很好的问题,因为我有 3 个课程:
- WindowFrame - 它的一个类扩展了 JFrame,它将显示其中一个面板;
- WindowPanel - 它是一个扩展 JPanel 的类。我在那里有布局 BoxLayout。我想在 WindowFrame 中的其他面板之间切换;
- GButton - 它是一个类似于普通按钮的类,但我的纹理在 bg 上,我想通过 add() 轻松地将它们添加到 WindowPanel:
public class GButton extends JComponent implements MouseMotionListener, MouseListener{
int x, y , w, h; //the coordinates of button
Graphics2D g2d;
public GButton(int x, int y){
this.x = x; this.y = y;
this.w = 200; this.h = 100;
... //add listeners, loading some information etc
}
@Override
public void paintComponent(Graphics g){
g2d = (Graphics2D) g;
...//loading and draw on g2d
g2d.drawString("asidoaisjdiajsoidj",x,y);
}
//code with using events of mouse and so on
}
当我添加按钮时,按钮的纹理在y下方50px!下一个按钮已经与 y 产生了这种差异。为什么?我知道这一点,因为我通过帮助 MouseMove 事件检查它。这不是一个糟糕的图像大小或类似的东西。为什么它不起作用,它在其他地方画东西?更简单的方法可以获得相同的效果吗?请回答 :)