java的JTextarea不显示,代码如下求大神吗帮我看看,已通过主函数new出对象

package notePad;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class show extends JFrame{
private static final long serialVersionUID = 1L;
private JPanel panel;
private JMenuBar bar;
public show(){
this.setTitle("记事本");
this.setBounds(300, 150, 700, 500);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
initMenu();
}
private void initPanel() {
this.setLayout(null);
JTextArea text=new JTextArea();
text.setVisible(true);
panel=new JPanel();
panel.setBackground(Color.red);
panel.add(text,BorderLayout.CENTER);
this.add(panel,BorderLayout.CENTER);
}
private void initMenu() {
JMenu menu=new JMenu("文件");
JMenuItem item1=new JMenuItem("新建");
JMenuItem item2=new JMenuItem("打开");
JMenuItem item3=new JMenuItem("保存");
JMenuItem item4=new JMenuItem("另存为");
JMenuItem item5=new JMenuItem("关闭");
menu.add(item1);
menu.add(item2);
menu.add(item3);
menu.add(item4);
menu.addSeparator();
menu.add(item5);
bar=new JMenuBar();
this.setJMenuBar(bar);
bar.add(menu);
}
}

你在构造器中把 :this.setVisible(true); 这一句去掉,然后在主方法中这样写:
new show().setVisible(true);
这样就显示正常了。
也即是把 setVisible()语句移到主方法中就可以了。
特别提醒:一般不要在构造器中写这一句,如果是编写Dialog类时,一写这一句,后面的程序都阻塞了。
此外,在initPanel()方法中,要把 this.setLayout(null); 去掉。
下面是我修正过的代码:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class show extends JFrame{
private static final long serialVersionUID = 1L;
private JPanel panel;
private JMenuBar bar;
public show(){
this.setTitle("记事本");
this.setBounds(300, 150, 700, 500);
// this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
initMenu();
}
private void initPanel() {
// this.setLayout(null);
JTextArea text=new JTextArea();
text.setVisible(true);
panel=new JPanel();
panel.setBackground(Color.red);
panel.add(text,BorderLayout.CENTER);
this.add(panel,BorderLayout.CENTER);
}
private void initMenu() {
JMenu menu=new JMenu("文件");
JMenuItem item1=new JMenuItem("新建");
JMenuItem item2=new JMenuItem("打开");
JMenuItem item3=new JMenuItem("保存");
JMenuItem item4=new JMenuItem("另存为");
JMenuItem item5=new JMenuItem("关闭");
menu.add(item1);
menu.add(item2);
menu.add(item3);
menu.add(item4);
menu.addSeparator();
menu.add(item5);
bar=new JMenuBar();
this.setJMenuBar(bar);
bar.add(menu);
}
public static void main(String[] args)
{
new show().setVisible(true);;
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答