让程序运行,出来的总是一个框,里面没有任何东西,只有人为的去改变它的大小,他才显示,当你再人为的弄到先前的大小,他依旧显示,那怎么才能让他一开始就显示啊?
还有就是能不能帮我看下那个JScrollPane,当我改变大小时,滚动的一个按钮就看不见了,根本无法实现操作,我哪里错了啊??谢谢!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class Three implements ActionListener
{
JFrame f;
JComboBox jcb;
JTextArea jta;
JPanel p1,p2;
JScrollPane jsp;
public static void main(String args[])
{
Three three= new Three();
three.go();
}
public void go()
{
f=new JFrame("Select Demo");
f.setSize(300,300);
f.setVisible(true);
p1=new JPanel();
p2=new JPanel();
String[] itemList={"Mouse Entered","Mouse Pressed","Mouse Released","Mouse Clicked","Mouse Exited"};
jcb=new JComboBox(itemList);
jcb.setSelectedIndex(2);
jta=new JTextArea(10,10);
jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
p1.add(jcb);
p2.add(jsp);
f.getContentPane().add(p1,BorderLayout.WEST);
f.getContentPane().add(p2,BorderLayout.EAST);
jcb.addActionListener(this);
jcb.setEditable(false);
}
public void actionPerformed(ActionEvent e)
{
jta.append("\n");
jta.append((String)jcb.getSelectedItem());
}
}

解决方案 »

  1.   

    在go()最后加上
    f.pack();
      

  2.   

    你就少了一句话而已,让JVM去渲染他,然后让他显示在go方法最后加一句f.setVisible(true);1楼的方法我还没有测试
      

  3.   

    ok,1楼也是对的,就是让Frame或者是Panel可见,调用setVisible(true);方法就可以了建议去查看下api 可以了解的更清楚 些
      

  4.   

    这样应该可以了
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.WindowConstants;
    public class Three implements ActionListener
    {
        JFrame f;
        JComboBox jcb;
        JTextArea jta;
        JPanel p1,p2;
        JScrollPane jsp;
        public static void main(String args[])
        {
            Three three= new Three();
            three.go();
        }
        public void go()
        {
            f=new JFrame("Select Demo");
            f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            f.setSize(300,300);
            p1=new JPanel();
            p2=new JPanel();
            String[] itemList={"Mouse Entered","Mouse Pressed","Mouse Released","Mouse Clicked","Mouse Exited"};
            jcb=new JComboBox(itemList);
            jcb.setSelectedIndex(2);
            jta=new JTextArea(10,10);
            jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            p1.add(jcb);
            p2.add(jsp);
            f.getContentPane().add(p1,BorderLayout.WEST);
            f.getContentPane().add(p2,BorderLayout.EAST);
            jcb.addActionListener(this);
            jcb.setEditable(false);
            f.setVisible(true);
        }
        public void actionPerformed(ActionEvent e)
        {
            jta.append("\n");
            jta.append((String)jcb.getSelectedItem());
        }
    }
      

  5.   

    刚刚想起一件事情,
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    加上这句话,否则关闭窗口后,JVM 不会关闭
      

  6.   

    一楼,二楼的都顶上,f.pack();调整此窗口的大小,以适合其子组件的首选大小和布局。setVisible(true),设置可视
      

  7.   

    f.pack()可以,或者你把你的setVisible(true)放到go()的最后。
      

  8.   

    一定要把setVisible放在最后吗?为什么啊?
      

  9.   

    不放在最后,那么你就用pack()重布局一下。
      

  10.   

    不放在最后,那么你就用pack()重布局一下。