1,如何让表单中显示单选框呢?
步骤一:设置表格数据
在表格的data中设置元素为JRadioButton
public void layoutTable( ) {//TODO Object[][] datas=new Object[4][3]; for(int i=0;i<4;i++){ Object[]objs=new Object[3]; JPanel panel=new JPanel(); panel.add(new JRadioButton()); objs[0]=panel; objs[1]="b"+i; objs[2]="c"+i; datas[i]=objs; } DefaultTableModel model = new DefaultTableModel(datas, columnNames); parameterTable_1.setModel(model); this.parameterTable_1.setRowHeight(30); }
效果如图:
表格并没有显示控件,而是显示控件的对象信息,即调用了对象的toStirng() 方法
步骤二:设置setCellEditor
parameterTable_1.getColumnModel().getColumn(0) .setCellEditor(new MyButtonEditor());
但是还是显示的对象信息,没有达到预期效果.但是鼠标点击时才显示控件
步骤三:设置setCellRenderer
parameterTable_1.getColumnModel().getColumn(0) .setCellRenderer(new MyButtonRender());
达到了预期效果:
注意:
1,要同时有控件的cell的setCellEditor 和setCellRenderer
2,MyButtonEditor如下:
package com.yunma.table; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; public class MyButtonEditor extends DefaultCellEditor { /** * serialVersionUID */ private static final long serialVersionUID = -6546334664166791132L; private JPanel panel; private JButton button; private Object obj = null; public MyButtonEditor() { // DefautlCellEditor有此构造器,需要传入一个,但这个不会使用到,直接new一个即可。 super(new JTextField()); // 设置点击几次激活编辑。 this.setClickCountToStart(1); // this.initButton(); // // this.initPanel(); // // // 添加按钮。 // this.panel.add(this.button); } private void initButton() { this.button = new JButton(); // 设置按钮的大小及位置。 this.button.setBounds(0, 0, 100, 15); // 为按钮添加事件。这里只能添加ActionListner事件,Mouse事件无效。 this.button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 触发取消编辑的事件,不会调用tableModel的setValue方法。 // MyButtonEditor.this.fireEditingCanceled(); System.out.println(button.getText() + " is pressed"); // 这里可以做其它操作。 // 可以将table传入,通过getSelectedRow,getSelectColumn方法获取到当前选择的行和列及其它操作等。 } }); } private void initPanel() { this.panel = new JPanel(); // panel使用绝对定位,这样button就不会充满整个单元格。 this.panel.setLayout(null); } /** * 这里重写父类的编辑方法,返回一个JPanel对象即可(也可以直接返回一个Button对象,但是那样会填充满整个单元格) */ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // 只为按钮赋值即可。也可以作其它操作。 obj = value; return (JComponent) value; } /** * 重写编辑单元格时获取的值。如果不重写,这里可能会为按钮设置错误的值。 * will be invoke when editable and losing focus */ @Override public Object getCellEditorValue() { return obj; } }
3,MyButtonRender 代码如下:
package com.yunma.table; import java.awt.Component; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; public class MyButtonRender implements TableCellRenderer { public MyButtonRender() { } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // 只为按钮赋值即可。也可以作其它操作,如绘背景等。 /*** * code below is useless */ // this.button.addActionListener(new ActionListener() // { // // @Override // public void actionPerformed(ActionEvent e) // { // System.out.println("a:"+button.getText()); // } // }); return (Component)value; } }
相关推荐
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI...
Java Swing 是Java编程语言中用于构建图形用户界面(GUI)的一个强大的工具包。它是对早期的Abstract Window Toolkit (AWT) 的扩展,提供了更丰富的功能和更好的平台独立性。Swing 包含了大量的组件,使得开发者可以...
这个“最全的Java Swing示例程序”集合包含了Swing库中的各种组件和功能的实例,对于学习和理解Swing编程非常有帮助。 Swing组件包括但不限于: 1. JFrame:这是Swing中的顶级容器,通常作为应用程序的主窗口。你...
- "Java图形用户界面设计(Swing常用组件).ppt"和"JavaSwing界面设计(所有控件及示例).ppt"两个文件中可能包含了各种Swing组件的使用示例和实际应用,建议仔细学习和实践。 9. **学习资源** - Java官方文档:提供...
此外,Swing还支持其他的监听器,如ItemListener(用于复选框或单选按钮)、MouseListener(处理鼠标事件)等,可以根据需求灵活应用。 为了提供更好的用户体验,Swing应用还可以通过布局管理器来调整组件的位置和...
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。Swing提供了一套丰富的组件,用于创建桌面应用程序,包括按钮、文本框、菜单、滚动面板等。Swing是完全由...
Swing中的事件处理是通过监听器实现的,例如ActionListener用于处理按钮点击事件,ItemListener用于处理单选按钮或复选框的选择变化。在图书管理系统中,可以通过监听用户操作,如点击“搜索”按钮时触发查询书籍的...
- `JCheckBox`、`JRadioButton`:提供复选框和单选按钮功能。 - `JComboBox`、`JList` 和 `JTable`:用于数据展示和交互,如下拉列表、列表视图和表格。 2. **事件处理**: - Swing使用事件监听器模型来处理用户...
Swing 提供了大量的组件,包括基础组件如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动面板(JScrollPane)以及更复杂的组件如表格(JTable)、...
1. **基础组件**:Swing中的基础组件包括JButton(按钮)、JLabel(标签)、JTextField(文本字段)、JTextArea(多行文本区域)、JComboBox(组合框)、JCheckBox(复选框)、JRadioButton(单选按钮)和...
Java Swing 是Java编程语言中用于构建桌面应用程序的图形用户界面(GUI)工具包。它属于Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,使得开发者可以创建出具有专业外观和交互性的应用。本资源...
Java Swing 是Java GUI库的一部分,用于构建桌面应用程序。在Swing中,数据模型是一个关键概念,它将数据和用户界面的表示分离开来,使得代码更易于管理和维护。以下是关于"Java Swing数据模型"的详细解释: 1. **...
在Swing中,开发者可以创建各种窗口组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动面板(JScrollPane)以及菜单(JMenu)等。这些组件通过...
- **ItemListener**: 用于处理复选框或单选按钮的状态改变事件。 - **定制与美化**:Swing 允许开发者高度定制组件的外观和行为,包括但不限于: - **UI 代理**: 通过设置不同的 LookAndFeel 来改变应用程序的...
7. **JRadioButton** 和 **JCheckBox**: 这两者分别代表单选按钮和复选框,它们允许用户在多个选项中进行选择,而JRadioButton则限制只能选择一个。 8. **JTable**: JTable 用于展示表格数据,用户可以查看和编辑...
6. **事件监听器**:Swing组件支持多种类型的事件监听,例如ActionListener(按钮点击)、ItemListener(复选框或单选按钮选择)等。开发者需要为各个组件添加合适的监听器,以响应用户的交互行为。 7. **设计模式*...
Swing中的主要组件包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动条(JScrollPane)、列表(JList)、表格(JTable)、树(JTree)以及对话框...
- **选中状态**:对于某些组件,如复选框或单选按钮,可以通过`setSelected(true)`方法使其处于选中状态。 - **查询选中状态**:通过调用`isSelected()`方法来查询当前是否被选中。 #### 5. 用户交互 - **焦点管理...
Java Swing 是Java GUI(图形用户界面)开发的重要库,它属于Java Foundation Classes (JFC) 的一部分。Swing 提供了一系列组件,用于构建美观、功能丰富的桌面应用程序。本教程将全面解析Java Swing的相关知识点,...
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件来构建桌面应用程序。Swing 是在AWT(Abstract Window Toolkit)的基础上构建的,提供了更丰富的功能和更好的外观,尤其是在Windows、Mac OS X...