请教:关于JTable的一些特殊问题 对JTable中的某项进行编辑时(比如原来的内容是“aaa”),出现一个文本编辑框,然后添加若干字符(如“bbb”),此时在编辑并没有结束的情况下,如果你改变了JTable所在窗口的宽度,从而导致了正在编辑的cell所在的列的宽度发生变化,则你正在编辑的内容将会丢失,并且编辑框消失。有没有办法实现:当正在编辑的列的宽度发生变化时,编辑框也能够随之改变宽度,从而保持编辑状态? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以把JTable写成能够横向拉动的方式就可以了 如何能够将JTable设置为横向拉动?SWING中有相应的API吗? import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.sql.*;import java.util.Vector;public class RowHeaderTable extends JFrame{ public RowHeaderTable() { super("Demo"); this.setSize(300,200); this.setDefaultCloseOperation(EXIT_ON_CLOSE); TableModel tm = new AbstractTableModel() { String data[] = {"","a","b","c","d","e"}; String headers[] = {"Row #","Column 1","Column 2","Column 3","Column 4","Column 5"}; public int getColumnCount(){return data.length;} public int getRowCount(){return 1000;} public String getColumnName(int col){return headers[col];} public Object getValueAt(int row,int col) { return data[col]+row; } }; TableColumnModel cm = new DefaultTableColumnModel() { boolean first = true; public void addColumn(TableColumn tc) { if(first){first = false;return;} tc.setMinWidth(50); super.addColumn(tc); } }; TableColumnModel rowHeaderModel = new DefaultTableColumnModel() { boolean first = true; public void addColumn(TableColumn tc) { if(first) { tc.setMaxWidth(tc.getPreferredWidth()); super.addColumn(tc); first = false; } } }; JTable jt = new JTable(tm,cm); JTable headerColumn = new JTable(tm,rowHeaderModel); jt.createDefaultColumnsFromModel(); headerColumn.createDefaultColumnsFromModel(); jt.setSelectionModel(headerColumn.getSelectionModel()); headerColumn.setBackground(Color.lightGray); headerColumn.setColumnSelectionAllowed(false); headerColumn.setCellSelectionEnabled(false); JViewport jv = new JViewport(); jv.setView(headerColumn); jv.setPreferredSize(headerColumn.getMaximumSize()); jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JScrollPane jsp = new JScrollPane(jt); jsp.setRowHeader(jv); jsp.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER,headerColumn.getTableHeader()); getContentPane().add(jsp,BorderLayout.CENTER); }public static void main(String args[]){ RowHeaderTable rht = new RowHeaderTable(); rht.setVisible(true); }}把行和列设置大小就能横向拖动了你可以看看代码 附上问题图片一张,请问如何解释,谢谢 奇怪的构造函数的问题 Java开发网站有什么优势? 有JAVA专家能指导我吗 applet的本地文件读取问题 Applet 必须每次都从服务器上下载吗,它能象ActiveX 控件下载到本地吗 Choice的方法求教; java命令不能执行,而javac可以执行,真是奇怪 JWindow 是不是不支持 KeyListener 各位大侠们,你们用的哪种java呀? visual j++还是java2.0我是初学者。推荐推荐吧 特请各位哥哥姐姐求救!小妹不是学JAVA但由于某种的事情需要,小妹想在这里请教一些很基础的数据库连接问题!谢谢! 关于隐藏列的问题
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.util.Vector;public class RowHeaderTable extends JFrame
{
public RowHeaderTable()
{
super("Demo");
this.setSize(300,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
TableModel tm = new AbstractTableModel()
{
String data[] = {"","a","b","c","d","e"};
String headers[] = {"Row #","Column 1","Column 2","Column 3","Column 4","Column 5"};
public int getColumnCount(){return data.length;}
public int getRowCount(){return 1000;}
public String getColumnName(int col){return headers[col];}
public Object getValueAt(int row,int col)
{
return data[col]+row;
}
};
TableColumnModel cm = new DefaultTableColumnModel()
{
boolean first = true;
public void addColumn(TableColumn tc)
{
if(first){first = false;return;}
tc.setMinWidth(50);
super.addColumn(tc);
}
};
TableColumnModel rowHeaderModel = new DefaultTableColumnModel()
{
boolean first = true;
public void addColumn(TableColumn tc)
{
if(first)
{
tc.setMaxWidth(tc.getPreferredWidth());
super.addColumn(tc);
first = false;
}
}
};
JTable jt = new JTable(tm,cm);
JTable headerColumn = new JTable(tm,rowHeaderModel);
jt.createDefaultColumnsFromModel();
headerColumn.createDefaultColumnsFromModel();
jt.setSelectionModel(headerColumn.getSelectionModel());
headerColumn.setBackground(Color.lightGray);
headerColumn.setColumnSelectionAllowed(false);
headerColumn.setCellSelectionEnabled(false);
JViewport jv = new JViewport();
jv.setView(headerColumn);
jv.setPreferredSize(headerColumn.getMaximumSize());
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane jsp = new JScrollPane(jt);
jsp.setRowHeader(jv);
jsp.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER,headerColumn.getTableHeader());
getContentPane().add(jsp,BorderLayout.CENTER);
}
public static void main(String args[])
{
RowHeaderTable rht = new RowHeaderTable();
rht.setVisible(true);
}
}把行和列设置大小就能横向拖动了你可以看看代码