总结:JFrame和Frame是有很大差别的。
不要混淆。否则方法是不能成功调用的
特别是背景色;JFrame.对象f在main里无法调用背景色前景色都不想显示
一下是书上的一段代码,编译错误,但是可以运行。当然这个结果很有点不正常。它的事件都无法实现在f上
package com.tent; import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JLabel; //做一个框架 import javax.swing.JButton; import javax.swing.JFrame; public class JavaGUI { //private static final MouseListener Button1Handler = null; //必须要是static //犯了一个很严重的错误,对象的创建和方法的调用都用在main函数里面,这里应该放到类里面。否则都不可能编程静态 static Frame f=new Frame();//注意既然其他的组件都不是扩展类。那么框架也不为扩展窗口 static Label lb1=new Label("JavaGUI演示程序"); static Label lb2=new Label("欢迎学习javaGUI编程"); static Label lb3=new Label("当前发生的按钮事件"); static Button jb1=new Button("会说话的按钮"); static Button jb2=new Button("退出的按钮"); ///因为我用的组件都是扩展型,所以方法背景,前景都无法调用 public static void main(String[] args) { f.add(lb1); f.add(lb2); f.add(lb3); f.add(jb1); f.add(jb2); f.setForeground(Color.red); f.setBackground(Color.orange); f.setSize(200,200); // f.setLayout(null);///这里布局出错 f.setLayout(new FlowLayout()); lb3.setBackground(Color.CYAN);//设置标签的背景色 jb1.addMouseListener(new Button1Handler());//单击某个按钮即可 触发ActionEvent事件。也可以触发MouseEvent事件 jb2.addActionListener(new Button2Handler()); f.setLocationRelativeTo(null); f.setVisible(true); f.setLayout(null); } } //不必声明静态的私有属性 class Button1Handler implements MouseListener{ @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub //按下点击事件 JavaGUI.lb3.setText("你已经单击鼠标"); } @Override public void mousePressed(MouseEvent e) { JavaGUI.lb3.setText("你已经按下鼠标"); // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { //JavaGUI.lb3.setText(""); } @Override public void mouseEntered(MouseEvent e) { JavaGUI.lb3.setText("你已经按下按钮"); // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub JavaGUI.lb3.setText("你已经离开按钮上方"); } } class Button2Handler implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub System.exit(0); } }