1.想必你得class是extendsJFrame的吧,你就要在构造函数你面定义一个窗体,但是你的那些显示和
监听的操作不一定要在构造里面写
2.内部类就用内部类里面的方法去直接改变
也可以依靠外部类的实例的基础生成内部类实例访问自家变量

解决方案 »

  1.   

    是extends JFrame的,因为我要重新显示panel里的内容,只能在监听的类里写,而监听的类是内部类,没办法调用其外部类的方法啊
      

  2.   

    你可以这样:
    public class YourFrame extends JFrame implements ActionListener{}
    这样就可以完成监听功能,而且能够调用外部的方法.不知道能不能解决你的问题.
      

  3.   

    关键问题在第14行,怎样让mainPane里面的内容重新显示?
    我不想要再对对象实例化进行重新显示
    1public class Cal extends JFrame
    2{
    3 public Cal(int y,int m)
    4 {
    5 JButton ok = new JButton("设定");
    6 //增加事件
    7 ok.addActionListener(
    8 new ActionListener()
    9 {
    10 public void actionPerformed(ActionEvent e)
    11 {
    12 int year = Integer.parseInt((String)yearBox.getSelectedItem());//获得选择的年份
    13 int month = Integer.parseInt((String)monthBox.getSelectedItem());//获得选择的月份
    14 new Cal(year,month);
    15 //System.out.println("year="+year+",month="+month);
    16 }
    17 });
    18 JPanel pane = new JPanel();
    19 pane.add(exp);
    20 JPanel mainPane = new JPanel();//日历的显示部分
    21 ...
    22 pane.add(mainPane);
    23 }
    24 ...
    24}