连着好几天遇到这个问题,今天终于解决了。
我是最近开始学的,所以问题不是出在maven的配置问题上,还没用到这个插件。
比如 这样报错
刚刚找到了我的问题,是包的路径引用不全,如上图中我注释掉的那一行,加上import static java.awt.BorderLayout.*;就可以了
我没搞懂为什么要加static 然后查了一下:
import static(静态导入)是JDK1.5中的新特性,一般我们导入一个类都用 import com.....ClassName;而静态导入是这样:import static com.....ClassName.*;这里多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名的方式来调用。
大概理解一下,就是说,如果你在该部分没有定义 ,比如f.setLayout(new BorderLayout),那么就可以用static方式直接用他的东西。
然后我是这样写的:
然后就报错了。。。
好像只能import static ... 了 。我中间定义的f.setLayout(new BorderLayout(300,200));对图形界面没有影响。可能是因为我加了一句f.pack().
然后界面一直是这样的:
这个问题我现在还很迷,再想想。。不行去问老师了。。
我用的这本书上的源代码说:默认Frame使用BorderLayout布局管理器,但是我把源代码抄过来会报错,然后就是上面的问题。我把代码给大家复制一下:
package test1;
import javax.swing.JButton;
import java.awt.*;
import static java.awt.BorderLayout.NORTH;//这里书上没有,所以我报错了
public class jisuanqi {
public static void main(String[] args){
//建立新窗体对象
Frame f = new Frame("计算器");
//f.setLayout(new BorderLayout(500,200));//书上没有这句
Panel p1 = new Panel();
p1.add(new TextField(30));
p1.add(new JButton("求和"));
f.add(p1,NORTH);
Panel p2 = new Panel();
//设置Panel使用GridLayout布局管理器
p2.setLayout(new GridLayout(3,5,4,4));
String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};
for (int i=0;i<name.length;i++){
p2.add(new Button(name[i]));
}
f.add(p2);
f.pack();
f.setVisible(true);
}
}