- 浏览: 308670 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (187)
- JAVA (66)
- JS (2)
- AJAX (9)
- Servlet (5)
- eclipse (4)
- html (2)
- PL/SQL (9)
- SOAP (1)
- other (14)
- JavaScript (8)
- Struts2 (6)
- Spring (10)
- Hibernate (5)
- JSP (1)
- Linux (3)
- WebService (2)
- 数据结构 (1)
- DB (5)
- English (1)
- maven (4)
- Code standard (2)
- SQL (1)
- 软件架构 (1)
- Tomcat (2)
- windows (1)
- HSQL (0)
- Open source framework (0)
- Web (6)
- Compass (0)
- Flex (1)
- OSGI (1)
- python (3)
- groovy (2)
- JPA (2)
- svn (1)
- jetty (1)
最新评论
-
zjfshowtime:
it doesn't work !why
Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池 -
coco5012:
Useful
sql server日期时间函数 datetime -
烟花弥散:
弱弱的问一句,您的第一个举例中else 后面可以跟判断条件吗? ...
Java高手论道:你还在用if else吗? -
coco5012:
Not very simple
使用assembly plugin实现自定义打包 -
mqlfly2008:
[color=red][size=medium][size=x ...
Java高手论道:你还在用if else吗?
Swing里的提供的表格过于简单。要做复杂的表格得花一番功夫。现把以前做过的整理如下:
- 表格里有checkbox的表格
package test; /** * Another JTable example, showing how column attributes can be refined * even when columns have been created automatically. Here we create some * specialised renderers and editors as well as changing widths and colors * for some of the columns in the SwingSet demo table. * * @version 1.19 11/17/05 * @author Philip Milne */ import javax.swing.*; import javax.swing.table.*; import javax.swing.border.*; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.Color; public class TableExample4 { public TableExample4() { JFrame frame = new JFrame("Table"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);}}); // Take the dummy data from SwingSet. final String[] names = {"First Name", "Last Name", "Favorite Color", "Favorite Number", "Vegetarian"}; final Object[][] data = { {"Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE}, {"Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE}, {"Alan", "Chung", "Green", new Integer(838), Boolean.FALSE}, {"Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE}, {"Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE}, {"Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE}, {"James", "Gosling", "Pink", new Integer(21), Boolean.FALSE}, {"David", "Karlton", "Red", new Integer(1), Boolean.FALSE}, {"Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE}, {"Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE}, {"Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE}, {"Dave", "Moore", "Green", new Integer(88), Boolean.FALSE}, {"Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE}, {"Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE}, {"Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE}, {"Chester", "Rose", "Black", new Integer(0), Boolean.FALSE}, {"Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE}, {"Georges", "Saab", "Red", new Integer(4), Boolean.FALSE}, {"Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE}, {"Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE}, {"Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE} }; // Create a model of the data. TableModel dataModel = new AbstractTableModel() { // These methods always need to be implemented. public int getColumnCount() { return names.length; } public int getRowCount() { return data.length;} public Object getValueAt(int row, int col) {return data[row][col];} // The default implementations of these methods in // AbstractTableModel would work, but we can refine them. public String getColumnName(int column) {return names[column];} public Class getColumnClass(int c) {return getValueAt(0, c).getClass();} public boolean isCellEditable(int row, int col) {return true;} public void setValueAt(Object aValue, int row, int column) { System.out.println("Setting value to: " + aValue); data[row][column] = aValue; } }; // Create the table JTable tableView = new JTable(dataModel); // Turn off auto-resizing so that we can set column sizes programmatically. // In this mode, all columns will get their preferred widths, as set blow. tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // Create a combo box to show that you can use one in a table. JComboBox comboBox = new JComboBox(); comboBox.addItem("Red"); comboBox.addItem("Orange"); comboBox.addItem("Yellow"); comboBox.addItem("Green"); comboBox.addItem("Blue"); comboBox.addItem("Indigo"); comboBox.addItem("Violet"); TableColumn colorColumn = tableView.getColumn("Favorite Color"); // Use the combo box as the editor in the "Favorite Color" column. colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); // Set a pink background and tooltip for the Color column renderer. DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); colorColumnRenderer.setBackground(Color.pink); colorColumnRenderer.setToolTipText("Click for combo box"); colorColumn.setCellRenderer(colorColumnRenderer); // Set a tooltip for the header of the colors column. TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); if (headerRenderer instanceof DefaultTableCellRenderer) ((DefaultTableCellRenderer)headerRenderer).setToolTipText("Hi Mom!"); // Set the width of the "Vegetarian" column. TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); vegetarianColumn.setPreferredWidth(100); // Show the values in the "Favorite Number" column in different colors. TableColumn numbersColumn = tableView.getColumn("Favorite Number"); DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { public void setValue(Object value) { int cellValue = (value instanceof Number) ? ((Number)value).intValue() : 0; setForeground((cellValue > 30) ? Color.black : Color.red); setText((value == null) ? "" : value.toString()); } }; numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); numbersColumn.setCellRenderer(numberColumnRenderer); numbersColumn.setPreferredWidth(110); // Finish setting up the table. JScrollPane scrollpane = new JScrollPane(tableView); scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); scrollpane.setPreferredSize(new Dimension(430, 200)); frame.getContentPane().add(scrollpane); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new TableExample4(); } }
2. 固定列的表格
package aaa; import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; /** * @version 1.0 12/05/98 */ public class FixedColumnExample extends JFrame { Object[][] data; Object[] column; JTable fixedTable, table; public FixedColumnExample() { super("Fixed Column Example"); setSize(400, 150); data = new Object[][]{ {"1","11","A","","","","",""}, {"2","22","","B","","","",""}, {"3","33","","","C","","",""}, {"4","44","","","","D","",""}, {"5","55","","","","","E",""}, {"6","66","","","","","","F"}}; column = new Object[]{"fixed 1","o","a","b","c","d","e","f"}; AbstractTableModel fixedModel = new AbstractTableModel() { public int getColumnCount() { return 1; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return (String) column[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } }; AbstractTableModel model = new AbstractTableModel() { public int getColumnCount() { return column.length - 2; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return (String) column[col + 1]; } public Object getValueAt(int row, int col) { return data[row][col + 1]; } public void setValueAt(Object obj, int row, int col) { data[row][col + 1] = obj; } }; fixedTable = new JTable(fixedModel); fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fixedTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent arg0) { checkSelection(true); } }); table = new JTable(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent arg0) { checkSelection(false); } }); JViewport viewport = new JViewport(); viewport.setView(fixedTable); viewport.setPreferredSize(fixedTable.getPreferredSize()); JScrollPane scroll = new JScrollPane(table); scroll.setRowHeaderView(viewport); scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedTable.getTableHeader()); getContentPane().add(scroll, BorderLayout.CENTER); } private void checkSelection(boolean isFixedTable) { int fixedSelectedIndex = fixedTable.getSelectedRow(); int selectedIndex = table.getSelectedRow(); if (fixedSelectedIndex != selectedIndex) { if (isFixedTable) { table.setRowSelectionInterval(fixedSelectedIndex, fixedSelectedIndex); } else { fixedTable.setRowSelectionInterval(selectedIndex, selectedIndex); } } } public static void main(String[] args) { FixedColumnExample frame = new FixedColumnExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); } }
3.表格列里有radiobutton的表格
/* (swing1.1beta3) */ //package jp.gr.java_conf.tame.swing.examples; /** * @version 1.0 12/03/98 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; class RadioButtonRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value == null) return null; return (Component) value; } } class RadioButtonEditor extends DefaultCellEditor implements ItemListener { private JRadioButton button; public RadioButtonEditor(JCheckBox checkBox) { super(checkBox); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (value == null) return null; button = (JRadioButton) value; button.addItemListener(this); return (Component) value; } public Object getCellEditorValue() { button.removeItemListener(this); return button; } public void itemStateChanged(ItemEvent e) { super.fireEditingStopped(); } } public class JRadioButtonTableExample extends JFrame { public JRadioButtonTableExample() { super("JRadioButtonTable Example"); UIDefaults ui = UIManager.getLookAndFeel().getDefaults(); UIManager.put("RadioButton.focus", ui.getColor("control")); DefaultTableModel dm = new DefaultTableModel(); dm.setDataVector(new Object[][] { { "Group 1", new JRadioButton("A") }, { "Group 1", new JRadioButton("B") }, { "Group 1", new JRadioButton("C") }, { "Group 2", new JRadioButton("a") }, { "Group 2", new JRadioButton("b") } }, new Object[] { "String", "JRadioButton" }); JTable table = new JTable(dm) { public void tableChanged(TableModelEvent e) { super.tableChanged(e); repaint(); } }; ButtonGroup group1 = new ButtonGroup(); group1.add((JRadioButton) dm.getValueAt(0, 1)); group1.add((JRadioButton) dm.getValueAt(1, 1)); group1.add((JRadioButton) dm.getValueAt(2, 1)); ButtonGroup group2 = new ButtonGroup(); group2.add((JRadioButton) dm.getValueAt(3, 1)); group2.add((JRadioButton) dm.getValueAt(4, 1)); table.getColumn("JRadioButton").setCellRenderer( new RadioButtonRenderer()); table.getColumn("JRadioButton").setCellEditor( new RadioButtonEditor(new JCheckBox())); JScrollPane scroll = new JScrollPane(table); getContentPane().add(scroll); setSize(200, 140); setVisible(true); } public static void main(String[] args) { JRadioButtonTableExample frame = new JRadioButtonTableExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
4.列header表格
/* (swing1.1beta3) */ //package jp.gr.java_conf.tame.swing.examples; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; /** * @version 1.0 11/09/98 */ class RowHeaderRenderer extends JLabel implements ListCellRenderer { RowHeaderRenderer(JTable table) { JTableHeader header = table.getTableHeader(); setOpaque(true); setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(CENTER); setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setText((value == null) ? "" : value.toString()); return this; } } public class RowHeaderExample extends JFrame { public RowHeaderExample() { super( "Row Header Example" ); setSize( 300, 150 ); ListModel lm = new AbstractListModel() { String headers[] = {"a", "b", "c", "d", "e", "f", "g", "h", "mmm"}; public int getSize() { return headers.length; } public Object getElementAt(int index) { return headers[index]; } }; DefaultTableModel dm = new DefaultTableModel(lm.getSize(),10); JTable table = new JTable( dm ); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JList rowHeader = new JList(lm); rowHeader.setFixedCellWidth(50); // rowHeader.setFixedCellHeight(table.getRowHeight() // ); // + table.getIntercellSpacing().height); rowHeader.setCellRenderer(new RowHeaderRenderer(table)); JScrollPane scroll = new JScrollPane( table ); scroll.setRowHeaderView(rowHeader); getContentPane().add(scroll, BorderLayout.CENTER); } public static void main(String[] args) { RowHeaderExample frame = new RowHeaderExample(); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit(0); } }); frame.setVisible(true); } }
发表评论
-
JAVA ArrayList深层 拷贝 克隆
2012-04-23 14:13 2559大家应该理解浅拷贝和深拷贝的区别: 浅拷贝:被复制对象的任何 ... -
深入 Lucene 索引机制
2011-09-21 21:49 617简介: Lucene 是一个 ... -
Apache DBUtils使用总结
2011-09-19 10:50 982Apache DBUtils使用总结 DBU ... -
Java搜索引擎 Lucene
2011-09-19 10:43 883Lucene 是一套用于全文 ... -
Java的弱引用(Weak Reference)
2011-09-16 08:47 1326之前一直没有接触 ... -
JAVA读取大文件
2011-09-13 10:27 3400/** * */ package com.b2s. ... -
Java性能优化技巧
2011-09-06 11:59 891摘要: ==================== ... -
java程序性能优化
2011-09-06 11:58 695一、避免在循环条件中使用复杂表达式 在不做编译优化 ... -
大家在普遍认识中对架构师这一职业有哪些误区
2011-09-04 10:26 747误区一 架构师与项目经理没有区别。大家经常在 ... -
Ibatis执行SQL操作把SQL打印到控制台
2011-08-10 10:46 2773要想让Ibatis打印SQL语句到控制台,可以在log4j.x ... -
用 PMD 铲除 bug
2011-06-08 17:33 1033简介: PMD 是一个开源的静态分析工具,是一个值得您添加 ... -
Web Service 实现分布式服务的基本原理
2011-05-24 13:27 1498简单的说, 就是客户端 ... -
Web Service概述
2011-05-24 10:16 1008Web Service是构建互联网 ... -
有关母亲的名人名言
2011-05-09 08:42 812God could not be everywhere and ... -
装饰器模式[Decorator]
2011-05-06 17:42 732装饰器模式 主要应用于这样一种场合,当你已经 ... -
Java 7已经完成的七大新功能预览
2011-05-06 12:26 1145今年的Devoxx大会又是一次有关Java 7进程的一 ... -
回归测试
2011-05-04 17:16 797回归测试, 英文是Regression testing。 ... -
jxl 使用总结收藏
2011-04-29 17:33 965jxl的一些总结 要 ... -
Struts1下如何实现国际化
2011-04-25 14:18 1141Struts1下如何实现国际化 1.ApplicationR ... -
JAVA静态导入(import static)详解
2011-04-20 17:52 4025在Java 5中,import语句得到了增强,以便提供甚至更加 ...
相关推荐
在Swing中,我们可以使用JTable和JTree来创建表格和树形视图,这两个组件可以独立使用,也可以结合在一起,形成一个具有表格和树结构的复杂视图,这在数据展示和操作时非常有用。 **JTable组件** JTable是Swing中...
这个实例集可能会涵盖上述所有知识点,甚至包括高级主题如Swing worker线程用于在后台执行任务,避免阻塞UI,以及JTable和JTree等用于显示表格和树状数据的组件。通过深入学习这些实例,开发者可以提升自己在Java ...
Java Swing MVC 模型是Java GUI编程中一种常见的设计模式,用于将用户界面(View)、业务逻辑...此外,你还可以探索Swing的其他高级特性,如布局管理器、事件委托模式以及如何自定义组件,以满足更复杂的应用场景。
随着学习的深入,将逐步涉及更复杂的组件使用和界面设计技巧,为后续的Swing开发打下坚实的基础。 总的来说,Swing开发实例旨在帮助开发者掌握使用Java Swing创建桌面应用程序的方法,包括组件的使用、布局管理、...
在Java Swing中,创建具有合并单元格功能的表格是一个常见的需求,这有助于增强用户界面的可视化效果和数据呈现。在给定的标题“swing 合并单元格的表格”和描述中,我们可以推断出这是一个关于如何在Swing JTable...
Swing还提供了更复杂的组件,如列表(JList)、表格(JTable)、树形视图(JTree)以及对话框(JOptionPane)。例如,`JList`用于展示一系列可选择的项,`JTable`可以显示二维数据,而`JTree`则适合展示层次结构的...
通过"JAVA_Swing 学习经典例子"这个资源,你可以深入理解Swing组件的用法,学习如何创建复杂的用户界面,以及如何处理用户交互。每个例子都包含了源码,你可以直接运行查看效果,也可以根据自己的需求进行修改和扩展...
通过深入研究这些源码实例,你可以掌握Swing的基本用法,了解组件的交互方式,以及如何构建复杂的用户界面。同时,这些实例也可以作为模板,为你的项目提供灵感和参考。不断实践和模仿这些例子,你将在Swing编程上...
通过这些实例,你可以深入学习如何使用Swing来构建复杂的用户界面,并且了解到如何使界面看起来更美观、更符合用户的操作习惯。 首先,Swing中的组件类主要包括JFrame、JPanel、JButton、JLabel、JTextArea、...
例如,JTable 组件就是一个很好的例子,它将表格数据(模型)与显示的表格(视图)以及用户与表格的交互(控制器)分离开来。 在"Java+Swing图形界面开发与案例详解》实例代码(1)"这个文件中,我们可能看到如何创建...
本实例将深入探讨Java Swing的布局管理器及其应用。 首先,Java Swing 提供了几种内置的布局管理器,包括 FlowLayout、BorderLayout、GridLayout、CardLayout 和 GroupLayout。每种布局管理器都有其特定的用途和...
通过这些小例子,开发者可以逐步掌握Swing的基本用法,进阶到更复杂的应用开发,如数据绑定、数据库交互、SwingWorker异步处理、国际化等。这些实例是学习Swing实践技能的宝贵资源,能够帮助开发者从理论过渡到实际...
在Java Swing中,`JTable`和`JTree`是两个重要的组件,它们分别用于展示数据的表格形式和树形结构。下面将详细介绍这两个组件的基本概念、常用方法以及实例。 ### `JTable`组件 `JTable`是Java Swing GUI库中的一...
在Swing源码例子中,你可以学习到如何使用各种Swing组件创建复杂的用户界面。例如,JFrame是顶级容器,用于承载其他组件;JButton、JLabel、JTextField等则是基本组件,用于接收用户输入和显示信息。此外,事件处理...
这些组件都是Swing界面库中常用的,它们的灵活性和可定制性使得开发者能够根据需求构建各种复杂的用户界面。在实际开发中,除了基本的使用外,还可以结合布局管理器(如FlowLayout、BorderLayout、GridLayout等)...
此外,Swing还提供了许多高级特性,比如JTable用于显示和编辑表格数据,JTree用于呈现树状结构的数据,以及JOptionPane用于显示对话框。这些组件可以帮助开发者构建更复杂、交互性更强的应用。 在学习这个例子程序...
在"java桌面程序swing demo实例"中,我们可以学习到如何使用Swing来创建一个基本的Java桌面程序。以下是一些核心的知识点: 1. **JFrame**: 这是Swing中的主窗口类,通常每个Swing应用程序都会有一个或多个JFrame。...
本项目"knowlege7.0(swing使用)例子"旨在通过实际的项目实例,帮助开发者深入理解和掌握Swing的使用。 在Swing中,组件(JComponent)是所有可显示对象的基础,包括按钮(JButton)、文本框(JTextField)、标签...
在"Swing demo例子"这个主题中,我们将深入探讨Swing的基本概念、主要组件以及如何通过实例来学习和应用Swing。 Swing库为开发者提供了大量预定义的组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)...
首先,Swing提供了丰富的组件库,包括JButton、JLabel、JTextField、JTextArea、JComboBox、JCheckBox、JRadioButton等,这些组件可以组合使用以创建各种复杂界面。例如,JFrame是窗口的基础,JPanel则可以作为容器...