[英]; expected when using a Mouse Listener
當用戶將鼠標懸停在某物上時,但在使用paint方法時,我試圖使邊框出現。 它說
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
您有語法問題。
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中的繪畫
您不能從AWT / Swing Listener調用paint()
覆蓋此方法會自動調用此方法
為JPanel覆蓋paintComponent而不是paint()
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);
}
});
請注意,這實際上在功能上不起作用,但是它說明了為什么出現語法錯誤
您不能將paint方法嵌套在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);
}
});
您不能在Java中將一個方法放到另一個方法中,使draw方法成為偵聽器,您應該做的只是在listener方法中調用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!!
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.