在本文中,我们将给您介绍关于如何在JTable中添加行?的详细内容,并且为您解答如何在jtable里添加数据的相关问题,此外,我们还将为您提供关于java–如何在JTable中动态设置RowHeigh
在本文中,我们将给您介绍关于如何在JTable中添加行?的详细内容,并且为您解答如何在jtable里添加数据的相关问题,此外,我们还将为您提供关于java – 如何在JTable中动态设置RowHeight、java – 如何在JTable中隐藏网格线、jQuery Datatables插件:如何在向表中添加行时指定行属性、jQuery-JTable:添加行的单击事件吗?的知识。
本文目录一览:- 如何在JTable中添加行?(如何在jtable里添加数据)
- java – 如何在JTable中动态设置RowHeight
- java – 如何在JTable中隐藏网格线
- jQuery Datatables插件:如何在向表中添加行时指定行属性
- jQuery-JTable:添加行的单击事件吗?
如何在JTable中添加行?(如何在jtable里添加数据)
您知道如何将新行添加到jTable
吗?
答案1
小编典典TableModelJTable
的后面处理表后面的所有数据。为了在表格中添加和删除行,您需要使用DefaultTableModel
要使用此模型创建表:
JTable table = new JTable(new DefaultTableModel(new Object[]{"Column1", "Column2"}));
要添加一行:
DefaultTableModel model = (DefaultTableModel) table.getModel();model.addRow(new Object[]{"Column 1", "Column 2", "Column 3"});
您也可以使用此方法删除行。
java – 如何在JTable中动态设置RowHeight
如何动态设置rowHeight以便我可以读取整个String?
这是一个例子:
import javax.swing.*; public class ExampleTable { public JPanel createTable() { JPanel totalGUI = new JPanel(); //define titles for table String[] title = {"TITLE1","TITLE2","TITLE3"}; //table data Object[][] playerdata = { {new Integer(34),"Steve","test test test"},{new Integer(32),"Patrick","dumdi dumdi dummdi dumm di di didumm"},{new Integer(10),"Sarah","blabla bla bla blabla bla bla blabla"},}; //create object 'textTable' JTable textTable = new JTable(playerdata,title); //set column width textTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); textTable.getColumnModel().getColumn(0).setPreferredWidth(60); textTable.getColumnModel().getColumn(1).setPreferredWidth(60); textTable.setDefaultRenderer(String.class,new RowHeightCellRenderer()); //scrollbar JScrollPane scrollPane = new JScrollPane(textTable); totalGUI.add(scrollPane); return totalGUI; } private static void createAndShowGUI() { //create main frame JFrame mainFrame = new JFrame(""); ExampleTable test = new ExampleTable(); JPanel totalGUI = new JPanel(); totalGUI = test.createTable(); //visible mode mainFrame.add(totalGUI); //integrate main panel to main frame mainFrame.pack(); mainFrame.setVisible(true); } public static void main (String[] args) { createAndShowGUI(); }//main }
在这里,您将看到用于对给定单元格的每个文本进行换行的代码
import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class RowHeightCellRenderer extends JTextArea implements TableCellRenderer { /** * */ private static final long serialVersionUID = 1L; public Component getTableCellRendererComponent (JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column ) { setText( value.toString() ); return this; } }
谢谢,但我想动态实现RowHeight,具体取决于字符串长度…
我想读取单元格中的整个字符串/文本.有什么建议?
我是java初学者,这是我的第一个问题.我很高兴得到答案.
解决方法
将单个行高调整为渲染组件的大小要求
基本上,要走的路是根据需要循环遍历单元格
>使用数据配置其渲染器
>询问渲染组件的首选大小
>将表格行高度设置为pref高度
OP编辑过的问题中的updateRowHeight方法很好.
JTextArea计算其preferredSize
为了获得一个合理的尺寸提示,它需要在另一个维度上以一些合理的尺寸“播种”.也就是说,如果我们想要一个需要宽度的高度,那么必须在每个调用中完成.在表的上下文中,合理的宽度是当前列宽:
public Component getTableCellRendererComponent(JTable table,int column) { ... // configure visuals setText((String) value); setSize(table.getColumnModel().getColumn(column).getWidth(),Short.MAX_VALUE); return this; }// getTableCellRendererComponent
动态调整高度
行高度完全确定在表/列/模型的某些稳定状态.因此,在初始化完成后以及任何其所依赖的状态发生更改时,您都要设置它(调用updateRowHeight)一次.
// TableModelListener @Override public void tableChanged(TableModelEvent e) { updateRowHeights(); } // TableColumnModelListener @Override public void columnMarginChanged(ChangeEvent e) { updateRowHeights(); }
注意
作为一般规则,getXXRendererComponent中的所有参数都是严格只读的,实现不得更改调用者的任何状态.从渲染器中更新rowHeight是错误的.
java – 如何在JTable中隐藏网格线
// build the table tableView = new JTable(ttm); //Specifify the selection Listener and model listSelectionModel = tableView.getSelectionModel(); listSelectionModel.addListSelectionListener(new SharedListSelectionHandler(tableView)); tableView.setSelectionModel(listSelectionModel); //Add a mouse listener to our table and implement double click event tableView.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ //If double click in a message show the Message Details window if (e.getClickCount() == 2){ showMessageDetail(); } } } ); // set my own renderer CustomCellRenderer mtr = new CustomCellRenderer(); tableView.setDefaultRenderer(Object.class,mtr); // table properties tableView.setGridColor(Color.black); tableView.setShowGrid(false); //tableView.setShowVerticalLines(false); //tableView.setShowHorizontalLines(false); tableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //hide header tableView.setTableHeader(null); // hide the id column String columName = tableView.getColumnName(TableModel.COLUMN_ID); tableView.getColumn(columName).setMaxWidth(0); tableView.getColumn(columName).setMinWidth(0); tableView.getColumn(columName).setWidth(0); //load the messages in the table loadMessages(); //adjust column width tableView = autoResizeColWidth(tableView,ttm); public class CustomCellRenderer extends JPanel implements TableCellRenderer { /** * First gradient color */ private static final Color COLOR_1 = new Color(255,255,200); /** * Second gradient color */ private static final Color COLOR_2 = new Color(255,200); /** * Controls gradient direction */ private static final float SIDE = 50; private GradientPaint gradientPaint = new GradientPaint(0,COLOR_1,SIDE,COLOR_2,true); private JLabel label = new JLabel(); public CustomCellRenderer() { setopaque(true); setLayout(new BorderLayout()); add(label,BorderLayout.CENTER); label.setHorizontalAlignment(SwingConstants.CENTER); } public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) { label.setText(value.toString()); return this; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setPaint(gradientPaint); g2.fillRect(0,getWidth(),getHeight()); } }
白色网格线总是被绘制.我被困在这里
我必须实现一个自定义的视口来摆脱这一点吗?
提前致谢,
亚历克斯
解决方法
>禁用网格显示
>零行/列单元间距
代码:
table.setShowGrid(false); table.setIntercellSpacing(new Dimension(0,0));
或者使用JXTable(从SwingX project开始):
xTable.setShowGrid(false,false);
jQuery Datatables插件:如何在向表中添加行时指定行属性
我想我不需要将它存储在属性中,如果在添加行时有另一种方法将该信息发送回视图.有没有人对此有任何想法?
谢谢.
解决方法
function(rowsToAdd) { var rowList = JSON.parse(rowsToAdd); // rows come back as object representations of table rows,with properties $.each(rowList,function(index,row) { var rowStringArray = [row.Prop1,row.Prop2,row.Prop3,row.Prop4]; var rowPos = tableObject.fnAddData(rowStringArray); // add the row through the plugin,and receive the row's index in return var tableRowElement = tableObject.fnGetNodes(rowPos[0]); // get reference to <tr> element just added $(tableRowElement).attr('attributeINeeded',row.AttributeProp).attr('anotherAttributeINeeded',row.AttributeProp2); }); }
jQuery-JTable:添加行的单击事件吗?
我必须遵循以下代码来显示我的用户表,这是通过JTable实现的。
<script type="text/javascript"> $(document).ready(function() { $(''#userTableContainer'').jtable({ title: ''Users'', selecting: false, paging: true, pageSize: 15, sorting: true, addRecordButton: false, saveUserPreferences: false, create: false, edit: false, actions: { listAction: ''user/getUsers.htm'', }, fields: { username: { title: ''username'' }, firstname: { title: ''firstname'' }, lastname: { title: ''lastname'' }, company: { title: ''company'' } } }); $(''#userTableContainer'').jtable(''load''); });</script><div id="content"> <h1>Users</h1> <br /> <div id="userTableContainer"> </div></div>
是否可以为每行添加一个自定义操作事件?这样我就可以向控制器提交“ user / showUser.htm”之类的请求。
答案1
小编典典这应该可以帮助您:
$(''#userTableContainer'').jtable({ .... recordsLoaded: function(event, data) { $(''.jtable-data-row'').click(function() { var row_id = $(this).attr(''data-record-key''); alert(''clicked row with id ''+row_id); }); }});
关于如何在JTable中添加行?和如何在jtable里添加数据的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于java – 如何在JTable中动态设置RowHeight、java – 如何在JTable中隐藏网格线、jQuery Datatables插件:如何在向表中添加行时指定行属性、jQuery-JTable:添加行的单击事件吗?的相关信息,请在本站寻找。
本文标签: