Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTextPane是否可以有列和行?_Java_Swing_Jtextpane_Tabular - Fatal编程技术网

Java JTextPane是否可以有列和行?

Java JTextPane是否可以有列和行?,java,swing,jtextpane,tabular,Java,Swing,Jtextpane,Tabular,我从Netbeans designer的部分获得了JTextPane。我想在上面添加列和行。但是,在JTextPane的属性窗口中没有添加列或行的选项。还有其他方法吗?JTextPane并不意味着有“列”和“行”:但是您可以通过NetBeans设计器编辑其文本属性来更改其内容(单击文本属性旁边的…,打开一个对话框,您可以在其中为JTextPane输入一些多行文本).JTextPane支持格式化文档。它支持的一种格式是HTML。因此,可以使用HTML表来提供表格数据-列和行中的数据 也考虑使用A

我从Netbeans designer的部分获得了
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非常感谢您再次帮助我。