中易网

java swing jtable 打印+打印预览(求代码)

答案:6  悬赏:40  
解决时间 2021-04-06 10:57
JTABLE中有合并的单元格,要考虑到合并单元格分页打印的情况!
最佳答案
使用JTABLE做出和打印预览一样的分页效果然后PAINT出来就可以了!
全部回答
这个很多都发过帖子了 你可以搜搜
不懂啦。。。。。。
JDK 1.4+ import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.util.*; public class TextAreaRenderer extends JTextArea implements TableCellRenderer { private final DefaultTableCellRenderer adaptee = new DefaultTableCellRenderer(); private final Map cellSizes = new HashMap(); public TextAreaRenderer() { setLineWrap(true); setWrapStyleWord(true); } public Component getTableCellRendererComponent(// JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { // set the colours, etc. using the standard for that platform adaptee.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column); setForeground(adaptee.getForeground()); setBackground(adaptee.getBackground()); setBorder(adaptee.getBorder()); setFont(adaptee.getFont()); setText(adaptee.getText()); // This line was very important to get it working with JDK1.4 TableColumnModel columnModel = table.getColumnModel(); setSize(columnModel.getColumn(column).getWidth(), 100000); int height_wanted = (int) getPreferredSize().getHeight(); addSize(table, row, column, height_wanted); height_wanted = findTotalMaximumRowSize(table, row); if (height_wanted != table.getRowHeight(row)) { table.setRowHeight(row, height_wanted); } return this; } private void addSize(JTable table, int row, int column, int height) { Map rows = (Map) cellSizes.get(table); if (rows == null) { cellSizes.put(table, rows = new HashMap()); } Map rowheights = (Map) rows.get(new Integer(row)); if (rowheights == null) { rows.put(new Integer(row), rowheights = new HashMap()); } rowheights.put(new Integer(column), new Integer(height)); } private int findTotalMaximumRowSize(JTable table, int row) { int maximum_height = 0; Enumeration columns = table.getColumnModel().getColumns(); while (columns.hasMoreElements()) { TableColumn tc = (TableColumn) columns.nextElement(); TableCellRenderer cellRenderer = tc.getCellRenderer(); if (cellRenderer instanceof TextAreaRenderer) { TextAreaRenderer tar = (TextAreaRenderer) cellRenderer; maximum_height = Math.max(maximum_height, tar.findMaximumRowSize(table, row)); } } return maximum_height; } private int findMaximumRowSize(JTable table, int row) { Map rows = (Map) cellSizes.get(table); if (rows == null) return 0; Map rowheights = (Map) rows.get(new Integer(row)); if (rowheights == null) return 0; int maximum_height = 0; for (Iterator it = rowheights.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); int cellHeight = ((Integer) entry.getValue()).intValue(); maximum_height = Math.max(maximum_height, cellHeight); } return maximum_height; } } import javax.swing.*; public class TextAreaEditor extends DefaultCellEditor { public TextAreaEditor() { super(new JTextField()); final JTextArea textArea = new JTextArea(); textArea.setWrapStyleWord(true); textArea.setLineWrap(true); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setBorder(null); editorComponent = scrollPane; delegate = new DefaultCellEditor.EditorDelegate() { public void setValue(Object value) { textArea.setText((value != null) ? value.toString() : ""); } public Object getCellEditorValue() { return textArea.getText(); } }; } } import javax.swing.*; import javax.swing.table.*; public class TextAreaRendererTest extends JFrame { private final JTable table = new JTable(10, 4); public TextAreaRendererTest() { super(System.getProperty("java.vm.version")); // We use our cell renderer for columns 1, 2, 3 TableColumnModel cmodel = table.getColumnModel(); TextAreaRenderer textAreaRenderer = new TextAreaRenderer(); cmodel.getColumn(1).setCellRenderer(textAreaRenderer); cmodel.getColumn(2).setCellRenderer(new TextAreaRenderer()); // I am demonstrating that you can have several renderers in // one table, and they communicate with one another in // deciding the row height. cmodel.getColumn(3).setCellRenderer(textAreaRenderer); TextAreaEditor textEditor = new TextAreaEditor(); cmodel.getColumn(1).setCellEditor(textEditor); cmodel.getColumn(2).setCellEditor(textEditor); cmodel.getColumn(3).setCellEditor(textEditor); String test = "The lazy dog jumps over the quick brown fox"; for (int column = 0; column < 4; column++) { table.setValueAt(test, 0, column); table.setValueAt(test, 4, column); } test = test + test + test + test + test + test + test + test; table.setValueAt(test, 4, 2); getContentPane().add(new JScrollPane(table)); setSize(600, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new TextAreaRendererTest(); } } 我的例子 自己看看

hibernate都设置好了吗?

假设入库调用了以下的方法:

public void persist(list<item> items);

(item是商品的类)

session session = hibernateutil.getsessionfactory().getcurrentsession(); session.begintransaction();

for(item item: items)

    session.save(item); session.gettransaction().commit();

// hibernateutil的代码如下

import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; public class hibernateutil

{

    private static final sessionfactory sessionfactory = buildsessionfactory();     private static sessionfactory buildsessionfactory()

    {     try

    {     // create the sessionfactory from hibernate.cfg.xml     return new configuration().configure().buildsessionfactory();     }     catch(throwable ex)

    {     // make sure you log the exception, as it might be swallowed     system.err.println("initial sessionfactory creation failed." + ex);     throw new runtimeexception(ex);     }     }     public static sessionfactory getsessionfactory()

    {     return sessionfactory;     } }

我是觉得jpa比hibernate好用点……

在JDK的DEMO中有,单元格的打印 及打印预览的代码。 但那里没有合并单元格的情况。不过你可以试一下。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
峰峰哪的旅馆不用身份证
我的QQ网名在电脑上显示,为什么一到了手机上
相册的英文怎么拼???
与我好多年的离婚女情人,近期和别人有了两性
大家高考前晚上学习都是怎么抗疲劳的 我只要
水果店运来一批橘子,第一天卖出全部的三分之
张晋在杀破狼2里打的是什么功夫
想16岁打玻尿酸
宛西制药厂是哪里的?
喜欢一个人,但她有男朋友怎么办?
通过物流往南昌发了3万多元的烟,被烟草查扣了
养花是老舍先生写的散文,文章借写养花的过程,
《君生我未生,我生君已老》出自哪里
江门到台山有多少公里?车费多少?
东风标致3008的usb插口可以插随身wifi吗
推荐资讯
Y我想买一张天津到通辽的火车票,怎么样才能
求一款消除类打怪游戏!可以消除剑盾血瓶金币
喀什市城市管理综合执法大队地址在什么地方,
在美国留学期间打工得到的收入需要缴税吗?另
起亚秀尔用什么机油比较合适
在模具图中R表示什么意思
时间轴重置!! 这不是危言耸听!而是真实存
最终用户许可协议和诊断数据 是什么
2010年贺岁片
西丽文光村地址在什么地方,想过去办事
学生火车连票
浙江体育彩票6十1和七星彩是同一个吗?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?