当用户将鼠标悬停在某物上时,我试图让边框出现,但是当我使用绘画方法时。它说
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编程的新手,所以我希望我没有犯错误。谢谢!
答案 0 :(得分:5)
你不能在java中嵌套两个方法:
public void mouseEntered(MouseEvent arg0) {
public void paint(Graphics g) { //Method inside a method is not allowed
答案 1 :(得分:2)
您遇到语法问题。
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
。阅读更多Painting in AWT and Swing
答案 2 :(得分:2)
你不能从AWT / Swing Listener调用paint()
通过覆盖Container
覆盖JPanel的paintComponent而不是paint()
答案 3 :(得分:0)
你不能在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);
}
});
请注意,这实际上不会在功能上有效,但它说明了为什么会出现语法错误
答案 4 :(得分:0)
您无法在mouseEntered方法中嵌套绘制方法;也许你只想要
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);
}
});
答案 5 :(得分:0)
你不能把一个方法放到java中的另一个方法中,将draw方法输出到监听器 你应该做的只是在监听器方法中调用draw方法:
答案 6 :(得分:0)
此
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!!
}
});