无法将JScrollBar / JScrollPane添加到此JTextPane

时间:2013-11-28 09:07:42

标签: java swing jscrollpane jtextpane

好的,所以这里是我的代码片段,其中包含问题:

private JTextField userText;
private ObjectOutputStream output;
private ObjectInputStream input;
private ServerSocket server;
private Socket connection;
private JTextPane images;
private JScrollPane jsp = new JScrollPane(images); 

public Server(){
   super(name+" - IM Server");
  images = new JTextPane();
  images.setContentType( "text/html" );
  HTMLDocument doc = (HTMLDocument)images.getDocument();
  userText = new JTextField();
  userText.setEditable(false);
  userText.addActionListener(
     new ActionListener(){
        public void actionPerformed(ActionEvent event){
           sendMessage(event.getActionCommand());
           userText.setText("");
        }
     }
  );
  add(userText, BorderLayout.NORTH);
  add(jsp);
  add(images, BorderLayout.CENTER);
  images.setEditable(false);
  try {
    doc.insertString(0, "This is where images and text will show up.\nTo send an image, do\n*image*LOCATION OF IMAGE\n with NO SPACES or EXTRA TEXT.", null );
} catch (BadLocationException e) {
    e.printStackTrace();
}
  setSize(700,400);
  setVisible(true);
  ImageIcon logo = new javax.swing.ImageIcon(getClass().getResource("CHAT.png"));
  setIconImage(logo.getImage());
}

当我使用它时,我的JTextPane上没有滚动条?!我试过移动add(jsp);上面和下面的位置,并在下方添加(图片,BorderLayout.NORTH);把它弄出来了?!所以我想知道的是如何将这个JScrollPane添加到我的JTextPane中以给它一个滚动条。提前谢谢!

1 个答案:

答案 0 :(得分:5)

基本上,您实际上从未向JScrollPane ...

添加有效组件
private JTextPane images;
private JScrollPane jsp = new JScrollPane(images); 

执行此操作时,imagesnull,所以基本上,您正在调用new JScrollPane(null);

然后,您基本上会在框架的顶部(替换)images上添加jsp ...

add(jsp);
add(images, BorderLayout.CENTER);

默认位置为BorderLayout.CENTER,边框布局只能支持5个可用位置中的任意一个...

相反,尝试类似......

public Server(){
    super(name+" - IM Server");
    images = new JTextPane();
    images.setContentType( "text/html" );
    HTMLDocument doc = (HTMLDocument)images.getDocument();
    userText = new JTextField();
    userText.setEditable(false);
    userText.addActionListener(
     new ActionListener(){
        public void actionPerformed(ActionEvent event){
           sendMessage(event.getActionCommand());
           userText.setText("");
        }
     }
    );
    add(userText, BorderLayout.NORTH);
    jsp.setViewportView(images);
    add(jsp);
    //add(images, BorderLayout.CENTER);
    images.setEditable(false);
    try {
        doc.insertString(0, "This is where images and text will show up.\nTo send an image, do\n*image*LOCATION OF IMAGE\n with NO SPACES or EXTRA TEXT.", null );
    } catch (BadLocationException e) {
        e.printStackTrace();
    }
    setSize(700,400);
    setVisible(true);
    ImageIcon logo = new javax.swing.ImageIcon(getClass().getResource("CHAT.png"));
    setIconImage(logo.getImage());
}