我试图在用户将鼠标悬停在某物上时显示边框,但是当我使用paint Method时。它说
Syntax Error on Token "(" ; expected and
Syntax Error on Token ")" ; expected
我的代码是:
JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
public void paint(Graphics g) { //Error is this line
g.drawRect(0, 72, 256, 72);
}
}
});
我只是不知道我还能在哪里放一个半科伦。我是GUI编程的新手,所以我希望我没有犯太糟糕的错误。谢谢!
你不能在java中嵌套两个方法:
public void mouseEntered(MouseEvent arg0) {
public void paint(Graphics g) { //Method inside a method is not allowed
-
你不能从AWT/Swing Listener调用paint()
此方法 通过为容器重写此方法自动调用
覆盖 paintComponent for JPanel 而不是 paint()
你有语法问题。
JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
// You can't define a method inside a method!!
}
});
顺便说一下,要在 Swing 中进行自定义绘画,您应该覆盖paintComponent
而不是 paint
.阅读更多 在AWT和Swing中绘画
不能在 mouseEnter 方法中嵌套绘制方法;也许您只是想要
JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
// public void paint(Graphics g) {
// g.drawRect(0, 72, 256, 72); }
java.awt.Component c = e.getComponent();
c.getGraphics().drawRect(0, 72, 256, 72);
}
});
Java 中将一个方法放入另一个方法中,使 draw 方法退出侦听器你应该做的只是在侦听器方法中调用 draw 方法:
这个
new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
// You can't define a method inside a method!!
}
};
是一个匿名类。现在,当您将其用作语句时,它将用作 };,并返回一个对象,而当您将其用作传递对象作为参数时,将使用它作为
fun(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
// You can't define a method inside a method!!
}
});
在 Java 中,方法中不能有方法。
相反,请执行此操作
JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
//call the paint method here
}
//Move this method here
public void paint(Graphics g) { //Error is this line
g.drawRect(0, 72, 256, 72);
}
});
请注意,这实际上在功能上不起作用,但它说明了为什么您会收到语法错误