当JTextPane中输入的字符行数超过了JTextPane组件的高度时,需要出现垂直下拉条。
有没有类似JScrollPane那样的方法,如果没有该怎样实现。
JTextPane的使用方法如下:
styleContext sc = new styleContext();
DefaultstyledDocument doc = new DefaultstyledDocument(sc);
JTextPane txaComment = new JTextPane(doc);
txaComment.setEditable(true);
txaComment.setBorder(BorderFactory.createLoweredBevelBorder());-=-=-=-=- 以下内容由 123456 在 2006年02月24日 08:21pm ?添加 -=-=-=-=-
我找到了实现方法,只要把它放在JScrollPane中就OK了。
但是,当我在JTable中使用此方法时,可以随着文本内容的增多而出现垂直滚动条,但是滚动条是不能用鼠标拖动的(已就是滚动条不动)。不知道什么原因,JTable使用的方法如下:
jtable.getColumnModel().getColumn(9).setCellRenderer(new
TextAreaExCellRender());
********************
private class TextAreaExCellRender extends DefaultTableCellRenderer { styleContext sc = new styleContext();
final DefaultstyledDocument doc = new DefaultstyledDocument(sc);
JTextPane jtp = new JTextPane(doc);
JScrollPane pane1=new JScrollPane(jtp,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.
HORIZONTAL_SCROLLBAR_NEVER); final style Heading2style = sc.addstyle("Heading2", null); public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) { Heading2style.addAttribute(styleConstants.Alignment,
new Integer(styleConstants.ALIGN_CENTER));
jtp.setBackground(this.getBackground());
//jtp.setBorder(BorderFactory.createLoweredBevelBorder());
//V0.06 06.02.24
jtp.setFont(new Font("Dialog", Font.PLAIN, 11));
try {
doc.remove(0, doc.getLength());
doc.insertString(0, (String) value, null); } catch (Exception e) {
}
//return jtp;
return pane1;
}
}
*************
jtable是JTable的对象。
注:jtable也是放在JScrollPane中的。
拜托。
有没有类似JScrollPane那样的方法,如果没有该怎样实现。
JTextPane的使用方法如下:
styleContext sc = new styleContext();
DefaultstyledDocument doc = new DefaultstyledDocument(sc);
JTextPane txaComment = new JTextPane(doc);
txaComment.setEditable(true);
txaComment.setBorder(BorderFactory.createLoweredBevelBorder());-=-=-=-=- 以下内容由 123456 在 2006年02月24日 08:21pm ?添加 -=-=-=-=-
我找到了实现方法,只要把它放在JScrollPane中就OK了。
但是,当我在JTable中使用此方法时,可以随着文本内容的增多而出现垂直滚动条,但是滚动条是不能用鼠标拖动的(已就是滚动条不动)。不知道什么原因,JTable使用的方法如下:
jtable.getColumnModel().getColumn(9).setCellRenderer(new
TextAreaExCellRender());
********************
private class TextAreaExCellRender extends DefaultTableCellRenderer { styleContext sc = new styleContext();
final DefaultstyledDocument doc = new DefaultstyledDocument(sc);
JTextPane jtp = new JTextPane(doc);
JScrollPane pane1=new JScrollPane(jtp,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.
HORIZONTAL_SCROLLBAR_NEVER); final style Heading2style = sc.addstyle("Heading2", null); public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) { Heading2style.addAttribute(styleConstants.Alignment,
new Integer(styleConstants.ALIGN_CENTER));
jtp.setBackground(this.getBackground());
//jtp.setBorder(BorderFactory.createLoweredBevelBorder());
//V0.06 06.02.24
jtp.setFont(new Font("Dialog", Font.PLAIN, 11));
try {
doc.remove(0, doc.getLength());
doc.insertString(0, (String) value, null); } catch (Exception e) {
}
//return jtp;
return pane1;
}
}
*************
jtable是JTable的对象。
注:jtable也是放在JScrollPane中的。
拜托。
setLayout(new BorderLayout());
JScrollPane scrollPane_log = new JScrollPane(textArea_logOut);//滚动条
leftSideStatus = new JLabel("");
rightSideStatus = new JLabel("");
leftSideStatus.setBorder(BorderFactory.createLoweredBevelBorder());
rightSideStatus.setBorder(BorderFactory.createLoweredBevelBorder());
add(leftSideStatus, BorderLayout.NORTH);
add(scrollPane_log, BorderLayout.CENTER);//增加滚动条
add(rightSideStatus, BorderLayout.SOUTH);
{
final ImageIcon [] icons = { down, up };
infoJTable = new JTable( );
this.setViewportView(infoJTable);
this.setAutoscrolls(true);
}我这样就可以啊 ,你试试好啦
前面加这个^_^