add无法解析为变量

时间:2013-01-30 22:12:14

标签: java

请允许我声明这是作业作业,我们将不胜感激。

我正在使用Eclipse(Juno)编写一个程序来创建一个框架,将一个球放在框架的顶部,并在边框的“南部”放置一排按钮。我遇到的问题是在添加按钮的类中,称为Btns.java,我收到了一些错误。

错误1:添加无法解析为变量 错误2:构造函数调用必须是构造函数中的第一个语句 错误3:令牌“。”上的语法错误,超出此标记后的预期

代码看起来对我来说是正确的。

Btns类的代码如下。

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class  Btns extends JFrame
{
    public Btns()
    {
        JButton jbtL = new JButton("Left");
        JButton jbtR = new JButton("Right");
        JButton jbtU = new JButton("Up");
        JButton jbtD = new JButton("Down");
        JButton jbtRd = new JButton("Red");
        JButton jbtG = new JButton("Green");
        add.(jbtL);
        add.(jbtR);
        add.(jbtU);
        add.(jbtD);
        add.(jbtRd);
        add.(jbtG);

    }

 }

Lab2.java代码:

import javax.swing.*; 
import java.awt.*;
import java.awt.event.*;

public class Lab2 extends JFrame { 

        public Lab2()
        {
        setLayout(new BorderLayout());

        add(new Ball(), BorderLayout.CENTER);
        add(new Btns(), BorderLayout.SOUTH);
        }



public static void main (String[] args) { 

    Lab2 frame = new Lab2();
    frame.setTitle("Move The Ball");
    frame.setSize(450, 700);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    }   
}

3 个答案:

答案 0 :(得分:5)

在方法括号之前,您有额外的点:

替换:

add.(jbtL);
add.(jbtR);
add.(jbtU);
 ...

add(jbtL);
add(jbtR);
add(jbtU);
...

答案 1 :(得分:4)

add()

是来自Component&的继承方法。 Container类,因此您删除了点并为您的案例选择了正确的实现,请参阅javadocs

答案 2 :(得分:0)

您是否编写过Java代码?

    public Btns()
    {
        JButton jbtL = new JButton("Left");
        JButton jbtR = new JButton("Right");
        JButton jbtU = new JButton("Up");
        JButton jbtD = new JButton("Down");
        JButton jbtRd = new JButton("Red");
        JButton jbtG = new JButton("Green");
        super.add(jbtL);
        super.add(jbtR);
        this.add(jbtU);
        super.add(jbtD);
        add(jbtRd);
        add(jbtG);
    }

点用作分辨率范围运算符,表示某些东西是某个类的成员。上面的super表示超级JFrame,它具有从add派生的方法Componentthis表示当前对象,其类型为Btns,其中add的方法也是JFrame

在大多数情况下,

thissuper不是必需的限定符,因此最后两个调用不使用super.

此外,如果要将Btns类型的对象添加到主框架,则应扩展JInternalFrame而不是JFrame

public class Btns extends javax.swing.JInternalFrame {

然后是构造函数:

public Lab2() {
   JDesktopPane p = new JDesktopPane();
   add(p);
   p.add(new Btns());
}