[英]How to debug this java code ? What is the error in this code?
import javax.swing.*; // For JPanel, etc.
import java.awt.*; // For Graphics, etc.
import java.awt.geom.*; // For Ellipse2D, etc.
import java.awt.event.*;
public class ShapeExample extends JPanel {
private Rectangle2D.Double square =
new Rectangle2D.Double(50, 50, 100, 100);
private Rectangle2D.Double square1 =
new Rectangle2D.Double(10, 10, 200, 200);
public void paintComponent(Graphics g) {
clear(g);
Graphics2D g2d = (Graphics2D)g;
g2d.fill(square);
g2d.draw(square1);
}
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
b.setActionCommand("Good Morning");
b.addActionListener(a);
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
b.addActionListener(a);
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
b.setActionCommand("Exit");
b.addActionListener(a);
g.pack();
g.show();
}
// super.paintComponent clears offscreen pixmap,
// since we're using double buffering by default.
protected void clear(Graphics g) {
super.paintComponent(g);
}
protected Rectangle2D.Double getsquare() {
return(square);
}
public static void main(String[] args) {
WindowUtilities.openInJFrame(new ShapeExample(), 100, 100);
Button b;
}
}
如何調試此代碼?
我得到的錯誤是
ShapeExample.java:19: <identifier> expected
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:19: <identifier> expected
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:19: ';' expected
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:19: invalid method declaration; return type required
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:19: illegal start of type
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:19: ';' expected
g.add(b = new Button("Bonjour"), BorderLayout.NORTH);
^
ShapeExample.java:20: <identifier> expected
b.setActionCommand("Good Morning");
^
ShapeExample.java:20: illegal start of type
b.setActionCommand("Good Morning");
^
ShapeExample.java:21: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:21: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:22: <identifier> expected
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:22: <identifier> expected
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:22: ';' expected
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:22: invalid method declaration; return type required
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:22: illegal start of type
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:22: ';' expected
g.add(b = new Button("Good Day"), BorderLayout.CENTER);
^
ShapeExample.java:23: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:23: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:24: <identifier> expected
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:24: <identifier> expected
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:24: ';' expected
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:24: invalid method declaration; return type required
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:24: illegal start of type
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:24: ';' expected
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
^
ShapeExample.java:25: <identifier> expected
b.setActionCommand("Exit");
^
ShapeExample.java:25: illegal start of type
b.setActionCommand("Exit");
^
ShapeExample.java:26: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:26: <identifier> expected
b.addActionListener(a);
^
ShapeExample.java:27: <identifier> expected
g.pack();
^
ShapeExample.java:28: <identifier> expected
g.show();
^
ShapeExample.java:33: class, interface, or enum expected
protected void clear(Graphics g) {
^
ShapeExample.java:35: class, interface, or enum expected
}
^
ShapeExample.java:39: class, interface, or enum expected
}
^
ShapeExample.java:41: class, interface, or enum expected
public static void main(String[] args) {
^
ShapeExample.java:43: class, interface, or enum expected
Button b;
^
ShapeExample.java:45: class, interface, or enum expected
}
如何調試呢?
您在類中隨機散布了代碼。 一個類中的所有非聲明代碼必須在某種方法內。 您是說要將代碼放入paintComponent
方法內部嗎? 如果是這樣,您將有一個多余的}
將該方法更改為:
public void paintComponent(Graphics g) {
clear(g);
Graphics2D g2d = (Graphics2D)g;
g2d.fill(square);
g2d.draw(square1);
Button bonjourButton = new Button("Bonjour");
g.add(bonjourButton, BorderLayout.NORTH);
b.setActionCommand("Good Morning");
b.addActionListener(a);
Button goodDayButton = new Button("Good Day");
g.add(goodDayButton, BorderLayout.CENTER);
b.addActionListener(a);
Button aurevoirButton = new Button("Aurevoir");
g.add(aurevoirButton, BorderLayout.SOUTH);
b.setActionCommand("Exit");
b.addActionListener(a);
g.pack();
g.show();
}
還要注意,我也在這里使用本地Button
實例。
編輯 :同時,您還需要定義動作偵聽器a
因為在代碼中a
任何地方都沒有命名為a
的東西,更不用說在此函數范圍內了。
主要錯誤在這里:
g.add(b = new Button("Aurevoir"), BorderLayout.SOUTH);
您應該使用:
g.add(new Button("Aurevoir"), BorderLayout.SOUTH);
或確認您的剩余代碼:
Button b = new Button("Aurevoir")
g.add(b, BorderLayout.SOUTH);
這可能還會解決其他標記的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.