JTextPane填充小程序框

时间:2012-03-24 04:46:03

标签: swing applet jtextpane

我刚开始使用applet,所以我不是很好。我最近尝试使用此代码:

public class AppletTest extends JApplet{    
  public void init(){
    try{
        SwingUtilities.invokeAndWait(new Runnable(){public void run(){
        setSize(500,500);
        JLabel lbl = new JLabel("Hello World");
        add(lbl);
        JTextPane pane = new JTextPane();
        pane.setSize(200, 200);
        add(pane);
        }});
    }catch(Exception e){
        System.err.println("Error Occurred");
    }
  }
}

我打算做的是制作500乘500小程序,文本窗格为200乘200.但是,当我运行程序时,文本窗格闪烁了一小段正确的大小然后继续填充applet并覆盖我在applet中放置的任何其他东西。如果我展开applet(通过拖动角落来操纵它),文本窗格也会增长。我尝试了这个,并使用JButton和JPasswordField获得了相同的结果。有什么我想念的吗?我尝试了setBounds(int i,int j,int k,int l)但是我得到了相同的结果。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

你需要改变两件事:

  1. 明确设置LayoutManagerFlowLayout很简单,在这里工作正常)

  2. setPreferredSize()

  3. 致电setSize()而不是JTextPanel

    以下是修改后的代码:

    import java.awt.Dimension;
    import java.awt.FlowLayout;
    
    import javax.swing.JApplet;
    import javax.swing.JLabel;
    import javax.swing.JTextPane;
    import javax.swing.SwingUtilities;
    
    public class AppletTest extends JApplet{    
      public void init(){
        try{
            SwingUtilities.invokeAndWait(new Runnable(){public void run(){
            setSize(500,500);
    
            // explicitly set a layout manager
            setLayout( new FlowLayout( ) );
    
            JLabel lbl = new JLabel("Hello World");
            add(lbl);
            JTextPane pane = new JTextPane();
    
            // use setPreferredSize, not setSize
            pane.setPreferredSize( new Dimension( 200, 200 ) );
    
            add(pane);
            }});
        }catch(Exception e){
            System.err.println("Error Occurred");
        }
      }
    }