我正用swing写一个记事本小程序,代码如下,发现显示不了JTextArea文本域,请高手指出错误之处。
package sw;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextArea;public class NoteBook2 extends JFrame { /**
 * 
 */
JPanel cotentpane = null;
JMenuBar bar ;
JTextArea area ;
JMenuItem mi11, mi12, mi13, mi14, mi15, mi16, mi17, mi21, mi22, mi23, mi24,
mi25, mi26, mi27, mi28, mi29, mi210, mi211, mi32, mi41, mi51,
mi52 ;
JCheckBox mi31 ;
JMenu menu1, menu2, menu3, menu4, menu5 ; JTextArea getTextArea() {
if (area == null) {
area = new JTextArea();
}
return area;
} JPanel getCotentPane() {
if (cotentpane == null) {
cotentpane = new JPanel(new BorderLayout());
cotentpane.add(getTextArea(), BorderLayout.CENTER);
}
return cotentpane;
} JMenuBar getBar() {
if (bar == null) {
mi11 = new JMenuItem("新建");
mi12 = new JMenuItem("打开");
mi13 = new JMenuItem("保存");
mi14 = new JMenuItem("另存为");
mi15 = new JMenuItem("页面设置");
mi16 = new JMenuItem("打印");
mi17 = new JMenuItem("退出");
 mi17.addActionListener(new ActionListener(){
 public void actionPerformed(ActionEvent event){
 int flag = JOptionPane.showConfirmDialog(null,"你确定要退出吗?","警告",JOptionPane.YES_NO_OPTION);
 if (flag == JOptionPane.YES_OPTION) System.exit(0);
 }
 }
 ); mi21 = new JMenuItem("撤销");
mi22 = new JMenuItem("剪切");
mi23 = new JMenuItem("复制");
mi24 = new JMenuItem("粘贴");
mi25 = new JMenuItem("删除");
mi26 = new JMenuItem("查找");
mi27 = new JMenuItem("查找下一个");
mi28 = new JMenuItem("替换");
mi29 = new JMenuItem("转到");
mi210 = new JMenuItem("全选");
mi211 = new JMenuItem("时间/日期"); mi31 = new JCheckBox("自动换行");
mi32 = new JMenuItem("字体"); mi41 = new JMenuItem("状态栏"); mi51 = new JMenuItem("查看帮助");
mi52 = new JMenuItem("关于记事本"); menu1 = new JMenu("文件");
menu2 = new JMenu("编辑");
menu3 = new JMenu("格式");
menu4 = new JMenu("查看");
menu5 = new JMenu("帮助"); menu1.add(mi11);
menu1.add(mi12);
menu1.add(mi13);
menu1.add(mi14);
menu1.add(new JSeparator());
menu1.add(mi15);
menu1.add(mi16);
menu1.add(new JSeparator());
menu1.add(mi17); menu2.add(mi21);
menu2.add(new JSeparator());
menu2.add(mi22);
menu2.add(mi23);
menu2.add(mi24);
menu2.add(mi25);
menu2.add(new JSeparator());
menu2.add(mi26);
menu2.add(mi27);
menu2.add(mi28);
menu2.add(mi29);
menu2.add(new JSeparator());
menu2.add(mi210);
menu2.add(mi211); menu3.add(mi31);
menu3.add(mi32); menu4.add(mi41); menu5.add(mi51);
menu5.add(new JSeparator());
menu5.add(mi52); bar = new JMenuBar();
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
bar.add(menu4);
bar.add(menu5); }
return bar;
} NoteBook2() {
super();
initialized();
} void initialized() {
this.setSize(800, 600);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
                  this.setTitle("记事本");
                   this.setContentPane(getContentPane());
this.setJMenuBar(getBar());
} public static void main(String[] args) {
NoteBook2 nb = new NoteBook2();
nb.setVisible(true);
}}

解决方案 »

  1.   

    this.setContentPane(getContentPane());
    this.setContentPane(getCotentPane());
      

  2.   

    另外在main方法里面最好加上一句话:
    public static void main(String[] args) {
    NoteBook2 nb = new NoteBook2();
    nb.setVisible(true);
    nb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
      

  3.   


    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JCheckBox;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JSeparator;
    import javax.swing.JTextArea;public class NoteBook2 extends JFrame {    /**
         * 
         */
        JPanel cotentpane = null;
        JMenuBar bar ;
        JTextArea area ;
        JMenuItem mi11, mi12, mi13, mi14, mi15, mi16, mi17, mi21, mi22, mi23, mi24,
                mi25, mi26, mi27, mi28, mi29, mi210, mi211, mi32, mi41, mi51,
                mi52 ;
        JCheckBox mi31 ;
        JMenu menu1, menu2, menu3, menu4, menu5 ;    JTextArea getTextArea() {
            if (area == null) {
                area = new JTextArea();
            }
            return area;
        }    JPanel getCotentPane2() { // 换掉,  重载不是这样的。
            if (cotentpane == null) {
                cotentpane = new JPanel(new BorderLayout());
                cotentpane.add(getTextArea(), BorderLayout.CENTER);
            }
            return cotentpane;
        }    JMenuBar getBar() {
            if (bar == null) {
                mi11 = new JMenuItem("新建");
                mi12 = new JMenuItem("打开");
                mi13 = new JMenuItem("保存");
                mi14 = new JMenuItem("另存为");
                mi15 = new JMenuItem("页面设置");
                mi16 = new JMenuItem("打印");
                mi17 = new JMenuItem("退出");
                 mi17.addActionListener(new ActionListener(){
                 public void actionPerformed(ActionEvent event){
                 int flag = JOptionPane.showConfirmDialog(null,"你确定要退出吗?","警告",JOptionPane.YES_NO_OPTION);
                 if (flag == JOptionPane.YES_OPTION) System.exit(0);
                 }
                 }
                 );            mi21 = new JMenuItem("撤销");
                mi22 = new JMenuItem("剪切");
                mi23 = new JMenuItem("复制");
                mi24 = new JMenuItem("粘贴");
                mi25 = new JMenuItem("删除");
                mi26 = new JMenuItem("查找");
                mi27 = new JMenuItem("查找下一个");
                mi28 = new JMenuItem("替换");
                mi29 = new JMenuItem("转到");
                mi210 = new JMenuItem("全选");
                mi211 = new JMenuItem("时间/日期");            mi31 = new JCheckBox("自动换行");
                mi32 = new JMenuItem("字体");            mi41 = new JMenuItem("状态栏");            mi51 = new JMenuItem("查看帮助");
                mi52 = new JMenuItem("关于记事本");            menu1 = new JMenu("文件");
                menu2 = new JMenu("编辑");
                menu3 = new JMenu("格式");
                menu4 = new JMenu("查看");
                menu5 = new JMenu("帮助");            menu1.add(mi11);
                menu1.add(mi12);
                menu1.add(mi13);
                menu1.add(mi14);
                menu1.add(new JSeparator());
                menu1.add(mi15);
                menu1.add(mi16);
                menu1.add(new JSeparator());
                menu1.add(mi17);            menu2.add(mi21);
                menu2.add(new JSeparator());
                menu2.add(mi22);
                menu2.add(mi23);
                menu2.add(mi24);
                menu2.add(mi25);
                menu2.add(new JSeparator());
                menu2.add(mi26);
                menu2.add(mi27);
                menu2.add(mi28);
                menu2.add(mi29);
                menu2.add(new JSeparator());
                menu2.add(mi210);
                menu2.add(mi211);            menu3.add(mi31);
                menu3.add(mi32);            menu4.add(mi41);            menu5.add(mi51);
                menu5.add(new JSeparator());
                menu5.add(mi52);            bar = new JMenuBar();
                bar.add(menu1);
                bar.add(menu2);
                bar.add(menu3);
                bar.add(menu4);
                bar.add(menu5);        }
            return bar;
        }    NoteBook2() {
            super();
            initialized();
        }    void initialized() {
            this.setSize(800, 600);    
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
                      this.setTitle("记事本");
                          this.setContentPane(getContentPane());
            this.setJMenuBar(getBar());
            this.getContentPane().add(this.getCotentPane2()); // 添加
        }    public static void main(String[] args) {
            NoteBook2 nb = new NoteBook2();
            nb.setVisible(true);
        }}
      

  4.   

    我很奇怪。lz怎么编译通过的?在运行时才发现显示不了JTextArea
      

  5.   


    this.setContentPane(getContentPane());
    这两个方法是java类里面的,等于说什么都没干.类似于:
    user.setName(user.getName());