Java JTabel断线
我的Java JTabel断线,java,swing,jtable,awt,line-breaks,Java,Swing,Jtable,Awt,Line Breaks,我的JTable中的换行符有问题 我尝试了很多解决方案,但都不奏效,所以我问了这个问题 谁能帮我解决这个问题,而不改变我的JTable构造函数 有关我的代码的一些详细信息: 我的程序显示,两个jTabbedPane和选项卡0中的JTable还有4个 JTabbedPane包含相同的表 我的程序只能全屏运行 这个程序只是测试jTable和jTabbedPanes的功能 我的问题集中在jTable单元格中的换行符上 代码: import java.awt.*; 导入java.awt.event.
JTable
中的换行符有问题
我尝试了很多解决方案,但都不奏效,所以我问了这个问题
谁能帮我解决这个问题,而不改变我的JTable
构造函数
有关我的代码的一些详细信息:
- 我的程序显示,两个jTabbedPane和选项卡0中的JTable还有4个 JTabbedPane包含相同的表
- 我的程序只能全屏运行
- 这个程序只是测试jTable和jTabbedPanes的功能
- 我的问题集中在jTable单元格中的换行符上
import java.awt.*;
导入java.awt.event.*;
导入java.util.*;
导入javax.swing.*;
导入javax.swing.JTabbedPane;
导入javax.swing.event.*;
导入javax.swing.table.*;
公共类Versuch01扩展了JFrame{
//安防属性
JTabbedPane[]JTabbedPane;
JPanel[]jPanelH;
JPanel[]jPanelL;
JScrollPane[]JScrollPane;
JTable[]JTable;
最终int-wordWrapColumnIndex=5;
//恩德属性
公共服务(01({
//帧初始化
超级();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
维度d=Toolkit.getDefaultToolkit().getScreenSize();
int frameWidth=400;
int frameHeight=400;
设置大小(帧宽度、帧高度);
intx1=(d.width-getSize().width)/2;
inty1=(d.height-getSize().height)/2;
设定位置(x1,y1);
int x=(int)d.getWidth();
int y=(int)d.getHeight();
setExtendedState(java.awt.Frame.MAXIMIZED_两者);
setLayout(新的BorderLayout());
setTitle(“Versuch01”);
可设置大小(真);
字符串[]列名称={
“名字”、“姓氏”、“运动”、“年份”,
“素食者”
};
对象[][]数据={
{
“凯西”,
“史密斯AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,
“滑雪板”、新整数(5)、新布尔值(真)
},
{
“约翰”,“多伊”,“赛艇”,新整数(3),
新布尔值(真)
},
{
“苏”、“黑”、“针织”,新整数(2),
新布尔值(false)
},
{
“简”,“白”,“快速阅读”,新整数(20),
新布尔值(false)
},
{
“乔”,“布朗”,“池”,新整数(10),
新布尔值(false)
}
};
//安芳康普嫩滕酒店
jTabbedPane=新jTabbedPane[2];
for(int i=0;i
换句话说,你想将“Smithaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?使用HTML标记,因为“我尝试了许多解决方案,但没有一个成功”,列出“前三名”&它们失败的原因。@Frakcool我希望单元格变大,当字符串太长时换行。什么是“太长”?您需要HTML标记和一些逻辑来知道在哪里添加它们String@Andrew汤普森1。post),错误:单元格未更改2。(5.post),错误
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JTabbedPane;
import javax.swing.event.*;
import javax.swing.table.*;
public class Versuch01 extends JFrame {
// Anfang Attribute
JTabbedPane[] jTabbedPane;
JPanel[] jPanelH;
JPanel[] jPanelL;
JScrollPane[] jScrollPane;
JTable[] jTable;
final int wordWrapColumnIndex = 5;
// Ende Attribute
public Versuch01() {
// Frame-Initialisierung
super();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int frameWidth = 400;
int frameHeight = 400;
setSize(frameWidth, frameHeight);
int x1 = (d.width - getSize().width) / 2;
int y1 = (d.height - getSize().height) / 2;
setLocation(x1, y1);
int x = (int) d.getWidth();
int y = (int) d.getHeight();
setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
setLayout(new BorderLayout());
setTitle("Versuch01");
setResizable(true);
String[] columnNames = {
"First Name", "Last Name", "Sport", "# of Years",
"Vegetarian"
};
Object[][] data = {
{
"Kathy",
"Smithaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa",
"Snowboarding", new Integer(5), new Boolean(true)
},
{
"John", "Doe", "Rowing", new Integer(3),
new Boolean(true)
},
{
"Sue", "Black", "Knitting", new Integer(2),
new Boolean(false)
},
{
"Jane", "White", "Speed reading", new Integer(20),
new Boolean(false)
},
{
"Joe", "Brown", "Pool", new Integer(10),
new Boolean(false)
}
};
// Anfang Komponenten
jTabbedPane = new JTabbedPane[2];
for (int i = 0; i < jTabbedPane.length; i++) {
jTabbedPane[i] = new JTabbedPane(JTabbedPane.TOP,
JTabbedPane.WRAP_TAB_LAYOUT);
} // end of for
jPanelH = new JPanel[2];
for (int i = 0; i < jPanelH.length; i++) {
jPanelH[i] = new JPanel();
jTabbedPane[0].addTab("Tab " + i, jPanelH[i]);
} // end of for
jPanelL = new JPanel[4];
jTable = new JTable[4];
jScrollPane = new JScrollPane[4];
for (int i = 0; i < jPanelL.length; i++) {
jPanelL[i] = new JPanel();
MultilineTableCell wordWrapRenderer = new MultilineTableCell();
jTable[i] = new JTable(data, columnNames) {
public TableCellRenderer getCellRenderer(int row, int column) {
if (column == wordWrapColumnIndex) {
return wordWrapRenderer;
} else {
return super.getCellRenderer(row, column);
}
}
};
jTable[i].setDefaultRenderer(String.class, new LineWrapCellRenderer());
jTable[i].setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable[i].getColumnModel().getColumn(0)
.setPreferredWidth((int) ((double) x * (0.05))); //Gibt die relative Größe in dezimalen Zahlen zu Tabbele an.
jTable[i].getColumnModel().getColumn(1)
.setPreferredWidth((int) ((double) x * (0.65)));
jTable[i].getColumnModel().getColumn(2)
.setPreferredWidth((int) ((double) x * (0.1)));
jTable[i].getColumnModel().getColumn(3)
.setPreferredWidth((int) ((double) x * (0.1)));
jTable[i].getColumnModel().getColumn(4)
.setPreferredWidth((int) ((double) x * (0.1)));
jScrollPane[i] = new JScrollPane(jTable[i]);
jScrollPane[i].setPreferredSize(new Dimension(x, y));
jPanelL[i].add(jScrollPane[i]);
jTabbedPane[1].addTab("Tab " + i, jPanelL[i]);
jTabbedPane[1].setTabPlacement(JTabbedPane.TOP);
jTabbedPane[1].setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
jTabbedPane[1].setPreferredSize(new Dimension(x, y));
jPanelH[0].add(jTabbedPane[1]);
} // end of for
add(jTabbedPane[0]);
// Ende Komponenten
setVisible(true);
} // end of public Versuch01
// Anfang Methoden
public static void main(String[] args) {
new Versuch01();
} // end of main
// Ende Methoden
} // end of class Versuch01