Java JTextPane是否可以有列和行?
我从Netbeans designer的部分获得了Java JTextPane是否可以有列和行?,java,swing,jtextpane,tabular,Java,Swing,Jtextpane,Tabular,我从Netbeans designer的部分获得了JTextPane。我想在上面添加列和行。但是,在JTextPane的属性窗口中没有添加列或行的选项。还有其他方法吗?JTextPane并不意味着有“列”和“行”:但是您可以通过NetBeans设计器编辑其文本属性来更改其内容(单击文本属性旁边的…,打开一个对话框,您可以在其中为JTextPane输入一些多行文本).JTextPane支持格式化文档。它支持的一种格式是HTML。因此,可以使用HTML表来提供表格数据-列和行中的数据 也考虑使用A
JTextPane
。我想在上面添加列和行。但是,在JTextPane
的属性窗口中没有添加列或行的选项。还有其他方法吗?JTextPane
并不意味着有“列”和“行”:但是您可以通过NetBeans设计器编辑其文本属性来更改其内容(单击文本
属性旁边的…
,打开一个对话框,您可以在其中为JTextPane输入一些多行文本).JTextPane
支持格式化文档。它支持的一种格式是HTML。因此,可以使用HTML表
来提供表格数据-列和行中的数据
也考虑使用A,当然(当然)有对列和行的内置支持。
< p>您可以添加像这里描述的自定义表。
及
此处描述的行/列插入
您可以覆盖JTextPane类方法和
向JTextPane添加列和行:
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import javax.swing.text.StyledDocument;
public class TextPane extends JTextPane {
private static final long serialVersionUID = 712368129156703980L;
private int rows, columns, rowHeight, columnWidth;
public TextPane() {
super();
rows = 0;
columns = 0;
}
public TextPane(StyledDocument doc) {
super(doc);
rows = 0;
columns = 0;
}
public TextPane(int rows, int columns) {
super();
this.rows = rows;
this.columns = columns;
}
public TextPane(StyledDocument doc, int rows, int columns) {
super(doc);
this.rows = rows;
this.columns = columns;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
if (rows < 0)
throw new IllegalArgumentException("rows less than zero.");
if (rows != this.rows) {
this.rows = rows;
revalidate();
}
}
public int getRowHeight() {
if (rowHeight == 0) {
FontMetrics metrics = getFontMetrics(getFont());
rowHeight = metrics.getHeight();
}
return rowHeight;
}
public int getColumns() {
return columns;
}
public void setColumns(int columns) {
if (columns < 0)
throw new IllegalArgumentException("columns less than zero.");
if (columns != this.columns) {
this.columns = columns;
revalidate();
}
}
public int getColumnWidth() {
if (columnWidth == 0) {
FontMetrics metrics = getFontMetrics(getFont());
columnWidth = metrics.charWidth('m');
}
return columnWidth;
}
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
d = (d == null) ? new Dimension(400, 400) : d;
Insets insets = getInsets();
if (columns != 0)
d.width = Math.max(d.width, columns * columnWidth + insets.left + insets.right);
if (rows != 0)
d.height = Math.max(d.height, rows * rowHeight + insets.top + insets.bottom);
return d;
}
protected String paramString() {
return super.paramString() + ",columns" + columns + ",columnWidth" + columnWidth + ",rows" + rows
+ ",,rowsHeight" + rowHeight;
}
public Dimension getPreferredScrollableViewportSize() {
Dimension size = super.getPreferredScrollableViewportSize();
size = (size == null) ? new Dimension(400, 400) : size;
Insets insets = getInsets();
size.width = (columns == 0) ? size.width : columns * getColumnWidth() + insets.left + insets.right;
size.height = (rows == 0) ? size.height : rows * getRowHeight() + insets.top + insets.bottom;
return size;
}
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
switch (orientation) {
case SwingConstants.VERTICAL:
return getRowHeight();
case SwingConstants.HORIZONTAL:
return getColumnWidth();
default:
throw new IllegalArgumentException("Invalid orientation: " + orientation);
}
}
}
导入java.awt.Dimension;
导入java.awt.FontMetrics;
导入java.awt.Insets;
导入java.awt.Rectangle;
导入javax.swing.JTextPane;
导入javax.swing.SwingConstants;
导入javax.swing.text.StyledDocument;
公共类TextPane扩展了JTextPane{
私有静态最终长serialVersionUID=71236812915670390L;
私有int行、列、行高、列宽;
公共文本窗格(){
超级();
行=0;
列=0;
}
公共文本窗格(样式文档文档文档){
超级医生;
行=0;
列=0;
}
公共文本窗格(int行、int列){
超级();
this.rows=行;
this.columns=列;
}
公共文本窗格(StyledDocument文档、int行、int列){
超级医生;
this.rows=行;
this.columns=列;
}
公共int getRows(){
返回行;
}
公共void集合行(int行){
如果(行数<0)
抛出新的IllegalArgumentException(“小于零的行”);
if(行!=此.rows){
this.rows=行;
重新验证();
}
}
public int getRowHeight(){
如果(行高==0){
FontMetrics=getFontMetrics(getFont());
rowHeight=metrics.getHeight();
}
返回高度;
}
公共int getColumns(){
返回列;
}
公共void setColumns(int列){
如果(列<0)
抛出新的IllegalArgumentException(“小于零的列”);
if(columns!=this.columns){
this.columns=列;
重新验证();
}
}
public int getColumnWidth(){
如果(列宽==0){
FontMetrics=getFontMetrics(getFont());
columnWidth=metrics.charWidth('m');
}
返回列宽度;
}
公共维度getPreferredSize(){
维度d=super.getPreferredSize();
d=(d==null)?新维度(400400):d;
Insets Insets=getInsets();
如果(列!=0)
d、 宽度=数学最大值(d.width,columns*columnWidth+insets.left+insets.right);
如果(行数!=0)
d、 高度=数学最大值(d.高度,行数*行高+插图顶部+插图底部);
返回d;
}
受保护字符串paramString(){
返回super.paramString()+”,列“+columns+”,列宽“+columnWidth+”,行“+rows
+“,,rowsHeight”+行高;
}
公共维度getPreferredScrollableViewportSize(){
维度大小=super.getPreferredScrollableViewportSize();
大小=(大小==null)?新维度(400400):大小;
Insets Insets=getInsets();
size.width=(columns==0)?size.width:columns*getColumnWidth()+insets.left+insets.right;
size.height=(rows==0)?size.height:rows*getRowHeight()+insets.top+insets.bottom;
返回大小;
}
公共int getScrollableUnitIncrement(矩形visibleRect、int方向、int方向){
开关(方向){
案例SwingConstants.VERTICAL:
返回getRowHeight();
案例SwingConstants.HORIZONTAL:
返回getColumnWidth();
违约:
抛出新的IllegalArgumentException(“方向无效:+orientation”);
}
}
}
\u非常感谢您再次帮助我。