Java增量错误()代码
我在每次点击增加一次时遇到问题Java增量错误()代码,java,graphics,jpanel,mouselistener,Java,Graphics,Jpanel,Mouselistener,我在每次点击增加一次时遇到问题 class window extends JPanel implements MouseListener{ int a=0; public void paint(Graphics g){ super.paint(); g.drawLine(5, 5, 200, 200); // TEST draw } @Override public void mousePressed(MouseEvent e) { a++; // increme
class window extends JPanel implements MouseListener{
int a=0;
public void paint(Graphics g){
super.paint();
g.drawLine(5, 5, 200, 200); // TEST draw
}
@Override
public void mousePressed(MouseEvent e) {
a++; // increment by one
System.out.println(a);// print out
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
class drawSpline_frame extends JFrame {
public drawSpline_frame(){
setSize(500,500);
setTitle("Spline");
Container cp = this.getContentPane(); // EDITED
cp.add(window, BorderLayout.CENTER );
window.addMouseListener(window);
}
}
class drawSpline{
public static void main(String[] args) {
JFrame frame = new drawSpline_frame();
frame.setVisible(true);
}
}
至少有问题,
paint
,但未调用super.paint
paint
时,您都将添加一个鼠标侦听器<代码>绘制由绘制子系统在决定需要重新绘制UI时调用,这意味着UI中的每个元素都会更新,您正在向组件添加另一个鼠标侦听器paintComponent
进行扩展,而不是扩展paintComponent
,并确保您正在调用super.paintComponent
public void paint(Graphics g){
addMouseListener(this);
g.drawLine(5, 5, 200, 200); // TEST draw
}
在您的代码中,您正在paint(Graphics g)
函数中添加侦听器!!
两件事:
paintComponent()
而不是paint()
,并且不要忘记调用super.paintComponent(g)
方法drawSpline\u-frame()
不完整,但JFrame的内容窗格的布局默认为BorderLayout()
。您只需执行以下操作:
jFrame.getContentPane().add(windowPan, BorderLayout.Center);
最后建议使用MouseAdapter
添加MouseListener
事件,您无需扩展它:
jPanel1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
jPanel1MouseClicked(evt);
}
});
你没有描述问题你忽略了你原来问题的答案,没有回答它们,你在重复同样的问题。这是不好的行为。投票以重复方式关闭。我正在尝试在类窗口中实现2个MouseListener。因为,我认为1.5,Frame#添加要添加的委托,所以您不需要使用getContentPane。BorderLayout的默认位置是居中,这意味着,您可以调用add(windowPan)…@MadProgrammer:也许我是个老古董,但我仍然喜欢使用getContentPane()
,因为它提醒我实际添加组件的位置。在尝试更改contentPane的属性(如背景)时,这一点更为重要。是的,但我认为这有助于我在添加多个面板时理解方向。只是习惯性的。无论如何,谢谢你提到:)@气垫船,谢谢你的更正。当然,我想对前几天说声对不起。@HovercraftFullOfEels我只是很懒,所以如果你不必键入它;)