`
fogiguiuu
  • 浏览: 31037 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JTable添加JSpinner

阅读更多

在JTable中嵌入编辑器现成的有checkbox,combobox,textfield。(主要是DefaultCellEditor类)

 

这里是嵌入时间微调器(spinner)的例子:

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ufidaplugin;

import java.awt.Component;
import java.awt.event.MouseEvent;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;

/**
 *
 * @author Administrator
 */
public class TestJtableJspinner {
    
    public static void main(String[] args){
        JTable table = new JTable();
        DefaultTableModel model = (DefaultTableModel)table.getModel();

        // Add some columns
        model.addColumn("A", new Object[]{"item1"});
        model.addColumn("B", new Object[]{"08:09:11"});

        // These are the spinner values
        String[] values = new String[]{"item1", "item2", "item3"};

        // Set the spinner editor on the 1st visible column
        int vColIndex = 0;
        TableColumn col = table.getColumnModel().getColumn(vColIndex);
        col.setCellEditor(new SpinnerEditor(values));

        // 2st
        Calendar calendar = Calendar.getInstance();
        Date initDate = calendar.getTime();
        calendar.add(Calendar.YEAR, -100);
        Date start = calendar.getTime();
        calendar.add(Calendar.YEAR, 200);
        Date end = calendar.getTime();
        TableColumn col2 = table.getColumnModel().getColumn(1);
        SpinnerDateEditor se = new SpinnerDateEditor(new SpinnerDateModel(initDate, start, end, Calendar.YEAR));
        col2.setCellEditor(se);

        JFrame frame = new JFrame("swing-test1");
        frame.add(table);
        frame.pack();
        frame.setVisible(true);

        // If you want to make the cell appear like a spinner in its
        // non-editing state, also set the spinner renderer
        //col.setCellRenderer(new SpinnerRenderer(values));
    }

    public static class SpinnerEditor extends AbstractCellEditor
        implements TableCellEditor {
        final JSpinner spinner = new JSpinner();

        // Initializes the spinner.
        public SpinnerEditor(String[] items) {
            spinner.setModel(new SpinnerListModel(java.util.Arrays.asList(items)));
        }

        // Prepares the spinner component and returns it.
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            spinner.setValue(value);
            return spinner;
        }

        // Enables the editor only for double-clicks.
        public boolean isCellEditable(EventObject evt) {
            if (evt instanceof MouseEvent) {
                return ((MouseEvent)evt).getClickCount() >= 2;
            }
            return true;
        }

        // Returns the spinners current value.
        public Object getCellEditorValue() {
            return spinner.getValue();
        }
    }

     public static class SpinnerDateEditor extends AbstractCellEditor
        implements TableCellEditor {
        final JSpinner spinner = new JSpinner();

        // Initializes the spinner.
        public SpinnerDateEditor(SpinnerModel model){
            spinner.setModel(model);
            spinner.setEditor(new JSpinner.DateEditor(spinner, "hh:mm:ss"));
        }

        // Prepares the spinner component and returns it.
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            Date date = null;
            try {
                date = new SimpleDateFormat("hh:mm:ss").parse(value.toString());
                // myDate = new MyDate(date.getTime());
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            spinner.setValue(date);
            return spinner;
        }

        // Enables the editor only for double-clicks.
        public boolean isCellEditable(EventObject evt) {
            if (evt instanceof MouseEvent) {
                return ((MouseEvent)evt).getClickCount() >= 2;
            }
            return true;
        }

        // Returns the spinners current value.
        public Object getCellEditorValue() {
            Date date = (Date)spinner.getValue();
            return new SimpleDateFormat("hh:mm:ss").format(date);
        }
    }
}
 参考文章:http://www.exampledepot.com/egs/javax.swing.table/Spinner.html
分享到:
评论

相关推荐

    JFrame文件上传Java_swing应用

    4. **日期选择**:在Swing中,JCalendar或JSpinner Date Model可以用于日期选择。用户可以选择特定日期,这在检索功能中非常有用,允许用户按照日期筛选文件。 5. **登录功能**:登录功能通常涉及用户身份验证,...

    java风景日历.pdf

    `MouseAdapter` 是实现了`MouseListener`接口的抽象类,通过添加到组件上,可以监听用户的鼠标点击事件,例如在日历上选择日期。 12. **EventQueue.invokeLater()**: 这个方法用于在事件调度线程上执行指定的...

    JAVA GUI三剑客之swing

    Swing还提供了许多高级特性,如JDesktopPane和JInternalFrame实现MDI(多文档界面)应用,JSpinner用于数值选择,JProgressBar和JProgressBar用于进度显示,JOptionPane用于简单的对话框提示,以及JSplitPane用于...

    java swing

    此外,JTabbedPane允许在一个窗口内创建多个选项卡,JSpinner提供数字选择器,JFileChooser帮助用户选择文件或目录,JToolBar可以创建工具栏。 六、外观和定制 Swing允许改变组件的外观,通过LookAndFeel类可以...

    javaswing开发大全

    7. **Swing小部件(JComponents)**: Swing 提供了一些增强的组件,如JOptionPane(对话框)、JProgressBar(进度条)、JSpinner(旋转器)和JTabbedPane(选项卡面板),这些小部件增加了应用程序的交互性和用户...

    swing经典开发,全面了解java swing核心编程

    7. **Swing小部件(Widgets)**:包括JSpinner(数字选择器)、JSlider(滑块)、JComboBox(下拉列表)等,提供了更多用户交互方式。 8. **国际化(Internationalization)**:Swing支持多语言,开发者可以通过...

    JAVA图形界面实现学生录取信息管理

    为了提高用户体验,可能添加了如JOptionPane进行信息提示,JSpinner用于数字输入限制,JCheckBox或JRadioButton实现多选功能。此外,使用Key Bindings可以为组件添加快捷键,方便用户操作。 10. **代码结构与模块...

    creating-a-graphical-interface-.zip_Creating

    此外,还可以使用JOptionPane展示对话框,JScrollPane添加滚动条,JTable和JList展示表格和列表数据,JTextArea和JEditorPane用于文本编辑和富文本显示。Swing还有许多高级组件和特性,如JTabbedPane(选项卡面板)...

    用swing组件做的餐饮管理系统

    库存模块通过JTextField和JSpinner组件监控食材库存,当库存量低于预设阈值时,显示警告信息。此外,进货和消耗记录可通过JTextArea展示,确保库存数据的准确性和透明度。 5. **客户管理** 客户信息管理通常包括...

    深入浅出Java Swing程序设计

    JSpinner和JDatePicker则为用户提供数字选择和日期选择。此外,Swing支持SwingWorker,使得在GUI线程之外执行耗时任务成为可能,避免了UI冻结。 七、国际化与 Accessibility Swing支持应用的国际化,允许开发者为...

    swingx

    8. **JXDatePicker**:提供了一个直观的日期选择界面,包括日历视图和下拉菜单,比标准的JSpinner日期模型更易用。 9. **JXErrorPane**:用于处理和显示应用程序中的错误信息,提供了统一的错误报告界面,增强了...

    java的小日历

    这表明程序不仅显示静态日历,还可能允许用户编辑或添加信息到特定日期。 ### 6. **颜色设置** 程序定义了一系列颜色变量,用于自定义界面元素的颜色,如背景色、前景色、选中单元格的颜色等。这增强了应用程序的...

    java swing实现的汽车租赁管理系统(详细文档+视频+源码).zip

    开发者可能使用JTable来展示车辆列表,通过JComboBox选择操作,如添加、删除和更新车辆信息。 2. **租赁业务**:租赁流程可能涉及租车申请、合同签订、费用计算等。开发者可能用JTextArea记录租赁合同,使用...

    java.swing总结

    例如,JTable 用于展示数据表格,JTree 用于显示层次结构数据,还有 JTabbedPane 用于创建选项卡式面板,JToolBar 用于创建工具栏,以及 JSpinner 用于数字输入等。Swing 还允许开发者自定义组件外观,通过设置 Look...

    Swing购物系统_毕业设计源码.rar

    3. **购物车管理**:用户选择商品后,添加到购物车的操作可以通过JButton实现,购物车状态可以显示在JLabel或者自定义组件中。购物车中的商品数量可以通过JSpinner进行调整。 4. **订单处理**:用户确认购买后,...

    精通 JAVASWING中文版

    事件处理是 Swing 的另一个关键部分,通过实现 ActionListener 或 MouseListener 接口,你可以为组件添加事件监听器,响应用户的交互行为。 此外,Swing 还引入了 JTabbedPane,允许你在同一窗口内创建多个选项卡,...

    java swing [英文第2版]

    7. **表组件(JTable)**:学习如何使用JTable展示和操作二维数据,包括排序、过滤和自定义渲染。 8. **树组件(JTree)**:理解JTree组件的使用,用于展示层次结构的数据。 9. **滚动面板(JScrollPane)**:当...

    Java Swing-航空登机系统源码.zip

    这里可能涉及JComboBox用于选择航班,JSpinner选择座位数量,以及支付功能的集成。 4. **登机流程**:包括检票、登机牌打印等功能。可能需要实现与打印机的交互,使用Swing的打印API。 5. **数据库连接**:航空...

    Java图形设计卷2Swing.rar

    1. **Swing组件基础**:介绍JFrame、JPanel、JButton、JLabel、JTextArea、JTextField等基本组件的用法,以及如何添加、移除和布局这些组件。 2. **事件处理**:讲解如何处理用户与GUI组件的交互,如按钮点击、文本...

    精通Java Swing程序设计_10844177

    例如,你可以为一个JButton添加一个ActionListener,当用户点击按钮时,会触发定义在监听器中的actionPerformed方法。 Swing还支持布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和BoxLayout,...

Global site tag (gtag.js) - Google Analytics