簡體   English   中英

如何調試此Java代碼? 這段代碼有什么錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM