在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
分享到:
相关推荐
4. **日期选择**:在Swing中,JCalendar或JSpinner Date Model可以用于日期选择。用户可以选择特定日期,这在检索功能中非常有用,允许用户按照日期筛选文件。 5. **登录功能**:登录功能通常涉及用户身份验证,...
`MouseAdapter` 是实现了`MouseListener`接口的抽象类,通过添加到组件上,可以监听用户的鼠标点击事件,例如在日历上选择日期。 12. **EventQueue.invokeLater()**: 这个方法用于在事件调度线程上执行指定的...
Swing还提供了许多高级特性,如JDesktopPane和JInternalFrame实现MDI(多文档界面)应用,JSpinner用于数值选择,JProgressBar和JProgressBar用于进度显示,JOptionPane用于简单的对话框提示,以及JSplitPane用于...
此外,JTabbedPane允许在一个窗口内创建多个选项卡,JSpinner提供数字选择器,JFileChooser帮助用户选择文件或目录,JToolBar可以创建工具栏。 六、外观和定制 Swing允许改变组件的外观,通过LookAndFeel类可以...
7. **Swing小部件(JComponents)**: Swing 提供了一些增强的组件,如JOptionPane(对话框)、JProgressBar(进度条)、JSpinner(旋转器)和JTabbedPane(选项卡面板),这些小部件增加了应用程序的交互性和用户...
7. **Swing小部件(Widgets)**:包括JSpinner(数字选择器)、JSlider(滑块)、JComboBox(下拉列表)等,提供了更多用户交互方式。 8. **国际化(Internationalization)**:Swing支持多语言,开发者可以通过...
为了提高用户体验,可能添加了如JOptionPane进行信息提示,JSpinner用于数字输入限制,JCheckBox或JRadioButton实现多选功能。此外,使用Key Bindings可以为组件添加快捷键,方便用户操作。 10. **代码结构与模块...
此外,还可以使用JOptionPane展示对话框,JScrollPane添加滚动条,JTable和JList展示表格和列表数据,JTextArea和JEditorPane用于文本编辑和富文本显示。Swing还有许多高级组件和特性,如JTabbedPane(选项卡面板)...
库存模块通过JTextField和JSpinner组件监控食材库存,当库存量低于预设阈值时,显示警告信息。此外,进货和消耗记录可通过JTextArea展示,确保库存数据的准确性和透明度。 5. **客户管理** 客户信息管理通常包括...
JSpinner和JDatePicker则为用户提供数字选择和日期选择。此外,Swing支持SwingWorker,使得在GUI线程之外执行耗时任务成为可能,避免了UI冻结。 七、国际化与 Accessibility Swing支持应用的国际化,允许开发者为...
8. **JXDatePicker**:提供了一个直观的日期选择界面,包括日历视图和下拉菜单,比标准的JSpinner日期模型更易用。 9. **JXErrorPane**:用于处理和显示应用程序中的错误信息,提供了统一的错误报告界面,增强了...
这表明程序不仅显示静态日历,还可能允许用户编辑或添加信息到特定日期。 ### 6. **颜色设置** 程序定义了一系列颜色变量,用于自定义界面元素的颜色,如背景色、前景色、选中单元格的颜色等。这增强了应用程序的...
开发者可能使用JTable来展示车辆列表,通过JComboBox选择操作,如添加、删除和更新车辆信息。 2. **租赁业务**:租赁流程可能涉及租车申请、合同签订、费用计算等。开发者可能用JTextArea记录租赁合同,使用...
例如,JTable 用于展示数据表格,JTree 用于显示层次结构数据,还有 JTabbedPane 用于创建选项卡式面板,JToolBar 用于创建工具栏,以及 JSpinner 用于数字输入等。Swing 还允许开发者自定义组件外观,通过设置 Look...
3. **购物车管理**:用户选择商品后,添加到购物车的操作可以通过JButton实现,购物车状态可以显示在JLabel或者自定义组件中。购物车中的商品数量可以通过JSpinner进行调整。 4. **订单处理**:用户确认购买后,...
事件处理是 Swing 的另一个关键部分,通过实现 ActionListener 或 MouseListener 接口,你可以为组件添加事件监听器,响应用户的交互行为。 此外,Swing 还引入了 JTabbedPane,允许你在同一窗口内创建多个选项卡,...
7. **表组件(JTable)**:学习如何使用JTable展示和操作二维数据,包括排序、过滤和自定义渲染。 8. **树组件(JTree)**:理解JTree组件的使用,用于展示层次结构的数据。 9. **滚动面板(JScrollPane)**:当...
这里可能涉及JComboBox用于选择航班,JSpinner选择座位数量,以及支付功能的集成。 4. **登机流程**:包括检票、登机牌打印等功能。可能需要实现与打印机的交互,使用Swing的打印API。 5. **数据库连接**:航空...
1. **Swing组件基础**:介绍JFrame、JPanel、JButton、JLabel、JTextArea、JTextField等基本组件的用法,以及如何添加、移除和布局这些组件。 2. **事件处理**:讲解如何处理用户与GUI组件的交互,如按钮点击、文本...
例如,你可以为一个JButton添加一个ActionListener,当用户点击按钮时,会触发定义在监听器中的actionPerformed方法。 Swing还支持布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和BoxLayout,...