「java实现动态表头」java实现动态表单
本篇文章给大家谈谈java实现动态表头,以及java实现动态表单对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 动态创建表
table class="table"
tr class="table_header"
td用户ID/td
td用户帐户/td
td真实姓名/td
td登陆密码/td
td用户性别/td
td数据操作/td
/tr
%
ListUser users=new ArrayListUser();
users = (ListUser) request.getAttribute("users");
for (int i = 0; i users.size(); i++) {
User e = users.get(i);
%
tr class="row%=(i % 2 + 1)%"
td%=e.getId()%/td
td%=e.getUsername()%/td
td%=e.getRealname()%/td
td%=e.getPassword()%/td
td%=e.getSex()%/td
tda href="%=request.getContextPath()%/delete.do?id=%=e.getId()%"删除用户/a
a href="%=request.getContextPath()%/update.jsp?id=%=e.getId()%"修改用户/a
/td
/tr
%
}
%
/table
向相面这样子就可以了,你在Servlet中查询出数据后存到一个List表中,然后在前台循环就可以了,有一条数据就会有一行
java 多表头表格的实现
按照你的要求编写的Java程序如下
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableRowSorter;
public class E extends JFrame implements KeyListener{
String[] columnTitle={"书名","图书作者","发行时间","价格"};
Object[][]data={{new String(),new String(),new Date(),0.0}};
DefaultTableModel model = new DefaultTableModel(data,columnTitle){
public Class getColumnClass(int column) {
Class returnValue;
if (column == 2 || column==3){
returnValue = getValueAt(0, column).getClass();
} else {
returnValue = Object.class;
}
return returnValue;
}
};
JTable jt=new JTable(model);
JScrollPane jsp=new JScrollPane(jt);
E(){
setTitle("表格测试");
jt.addKeyListener(this);
TableColumnModel tcm=jt.getColumnModel();
TableColumn tc=tcm.getColumn(0);
tc.setPreferredWidth(250);
TableColumn tc1=tcm.getColumn(1);
tc1.setPreferredWidth(75);
TableColumn tc2=tcm.getColumn(2);
tc2.setPreferredWidth(75);
TableColumn tc3=tcm.getColumn(3);
tc3.setPreferredWidth(200);
RowSorter sorter = new TableRowSorter(model);
jt.setRowSorter(sorter);
add(jsp);
setSize(600,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER){//在最后一行最后一列单元格处,按回车键表格增加一个空行
int column=jt.getColumnCount()-1;
int row=jt.getRowCount()-1;
if(column==jt.getSelectedColumn() row==jt.getSelectedRow()){
Object[] empty={new String(),new String(),new Date(),0.0};
model.addRow(empty);
}
}
if(e.getKeyCode()==KeyEvent.VK_INSERT){//按Insert键插入一个空行
Object[] empty={new String(),new String(),new Date(),0.0};
model.insertRow(jt.getSelectedRow(),empty);
}
if(e.getKeyCode()==KeyEvent.VK_DELETE){//按Delete键删除当前行
model.removeRow(jt.getSelectedRow());
}
}
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
new E();
}
}
运行结果(按价格升序排列,点表头可实现相应列升降序排序)
JAVA如何实现jtable 表头实现类似Excel筛选功能
用java的JTable实现类似Excel的报表控件主要需要完成的工作如下:
1. 单元格合并与拆分。
2. 基于JTextArea的渲染器,用来实现多行输入。
3. 由于采用JTextArea作为渲染器,导致文本只能向左对齐,后来通过重载JTextArea得以实现居中,居右,字体下划线等效果:)。
4. 鼠标动态拉行高,拉行宽。
5. 发现行数一多,导致性能下降很历害,所以实现了只刷新当前可视屏幕区域。
6. 单元格属性的设定:背景颜色、前景颜色、字体(大小,粗斜体,下划线,删除线)、对角线单元格(中国式报表)、边框线等
7. 打印预览
8. 打印
9. 自己实现的打印设置对话框(打印水印、打印方向、纸张页边距、打印纸张页数范围、打印顺序、设定打印的页眉和页脚、放大打印或缩小打印)
10.往单元格加载图片,可预览和打印出来
11.套打模式,在table显示标尺,并重置行高为1cm,行宽为2cm,以方便使用者对应套打纸张
12.为单元格绘制边线
13.查找和替换
14.增加行和列,删除行和列
15.格式刷
16.排序,升和降。可设定优先排序的形式,数值优先或着是中文优先,中文按照拼音排序
17.考贝,复制和贴粘
18.插入图表,目前只实现了柱状图表
19.求和
20.各种热键组合
21.显示和隐藏table网格线
Java实现jtable 表头实现类似Excel筛选功能,你可以采取以上步骤进行总结,希望你早日得到答案。
Java 实现多表头表格
哥们我很同情你,当初我为了实现多表头表格查遍了各种网页,结果别人给出的实例要么不符合要求,要么太过复杂,最后还是自己摸索出来的。不知道你要的东西是不是下面这种形式的。如果是请回个话,我再把代码贴出来。前些天给人回答问题后老是有人理也不理直到问题过期,一点诚意都没有。
简单点说就是要设置表头的UI,下面是我以前程序中的一个类,带滚动条
package 表格;
import javax.swing.*;
import javax.swing.plaf.basic.BasicTableHeaderUI;
import javax.swing.table.JTableHeader;
import java.awt.*;
/************************************************************
* 仓储(一日游、普通客户)操作的表格。
* @author 胡海波
*
*/
public class StoreTable extends JTable {
public StoreTable() {
super(0, 13);
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.getTableHeader().setUI(new UI());
}
// 表头绘制器*********************************************************************
private class UI extends BasicTableHeaderUI {
private JTableHeader header;
public void paint(Graphics g, JComponent c) {
header = (JTableHeader) c;
getTableHeader().setPreferredSize(new Dimension(StoreTable.this.getWidth(), 45));// 设置表头大小。横坐标必须足够大,
//否则会出现绘制不完全以及闪烁现象
//分类
JLabel label=getLabel("分类");
rendererPane.paintComponent(g, label, header, 0, 0, getWidth(0), 45, true);
//到货日期
label=getLabel("到货日期");
rendererPane.paintComponent(g, label, header, getX(1), 0, getWidth(1), 45, true);
//送货日期
label=getLabel("送货日期");
rendererPane.paintComponent(g, label, header, getX(2), 0, getWidth(2), 45, true);
//收款代理
label=getLabel("收款代理");
rendererPane.paintComponent(g, label, header, getX(3), 0, getWidth(3), 45, true);
//客户**************************************************************************
label=getLabel("客户");
rendererPane.paintComponent(g, label, header, getX(4), 0, getWidth(4)+getWidth(5), 30, true);
label=getLabel("上游");
rendererPane.paintComponent(g, label, header, getX(4), 30, getWidth(4), 15, true);
label=getLabel("下游");
rendererPane.paintComponent(g, label, header, getX(5), 30, getWidth(5), 15, true);
//报关单号**********************************************************************
label=getLabel("报关单号");
rendererPane.paintComponent(g, label, header, getX(6), 0, getX(10)-getX(6), 15, true);
label=getLabel("上游");
rendererPane.paintComponent(g, label, header, getX(6), 15, getWidth(6)+getWidth(7), 15, true);
label=getLabel("下游");
rendererPane.paintComponent(g, label, header, getX(8), 15, getWidth(8)+getWidth(9), 15, true);
label=getLabel("进口");
rendererPane.paintComponent(g, label, header, getX(6), 30, getWidth(6), 15, true);
label=getLabel("出口");
rendererPane.paintComponent(g, label, header, getX(7), 30, getWidth(7), 15, true);
label=getLabel("进口");
rendererPane.paintComponent(g, label, header, getX(8), 30, getWidth(8), 15, true);
label=getLabel("出口");
rendererPane.paintComponent(g, label, header, getX(9), 30, getWidth(9), 15, true);
//业务员
label=getLabel("业务员");
rendererPane.paintComponent(g, label, header, getX(10), 0, getWidth(10), 45, true);
//操作员
label=getLabel("操作员");
rendererPane.paintComponent(g, label, header, getX(11), 0, getWidth(11), 45, true);
//审核人
label=getLabel("审核人");
rendererPane.paintComponent(g, label, header, getX(12), 0, getWidth(12), 45, true);
}
// 得到指定列的起始坐标
private int getX(int column){
int x=0;
for(int i=0;icolumn;i++)
x+=header.getColumnModel().getColumn(i).getWidth();
return x;
}
//得到指定列的宽度
private int getWidth(int column){
return header.getColumnModel().getColumn(column).getWidth();
}
//得到具有指定文本的标签
private JLabel getLabel(String text){
JLabel label = new JLabel(text, JLabel.CENTER);
label.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return label;
}
}
public static void main(String[] args){
JFrame frame=new JFrame();
frame.setSize(800,300);
frame.setDefaultCloseOperation(3);
frame.getContentPane().add(new JScrollPane(new StoreTable()));
frame.setVisible(true);
}
}
关于java实现动态表头和java实现动态表单的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。