好的,所以这里是我的代码片段,其中包含问题:
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中以给它一个滚动条。提前谢谢!
答案 0 :(得分:5)
基本上,您实际上从未向JScrollPane
...
private JTextPane images;
private JScrollPane jsp = new JScrollPane(images);
执行此操作时,images
为null
,所以基本上,您正在调用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());
}