Ящик для заполнения JTextPane - PullRequest
0 голосов
/ 24 марта 2012

Я только начинаю с апплетов, поэтому я не очень хорош. Я недавно пытался использовать этот код:

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. Однако, когда я запустил программу, текстовая панель на мгновение вспыхнула в правильном размере, затем продолжила заполняться апплет и покрыть все остальное, что я положил в апплет. Если бы я развернул апплет (манипулировал им, перетаскивая угол), текстовая панель также выросла бы. Я попробовал это и получил те же результаты с JButton и JPasswordField. Есть ли что-то, что мне не хватает? Я пробовал setBounds (int i, int j, int k, int l), но я получил те же результаты. Любая помощь?

1 Ответ

1 голос
/ 24 марта 2012

Вам нужно изменить две вещи:

  1. Явно установите LayoutManager (FlowLayout прост и отлично работает здесь)

  2. Звоните setPreferredSize() вместо 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");
    }
  }
}
...