项目本来需要一个带有复选框的树形控件,于是我找到了JIDE里的一个开源控件,研究了一下,发现无法实现需要的功能,而我自己又比较水,在网上找到的其他代码都不会用,只好自己写一个简单的,有些“旁门左道”的感觉...下面是实现代码:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.util.Random;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class HGCheckBoxTest extends JCheckBox implements ActionListener{
public static final int ALL_SELECTED =1;
public static final int NONE_SELECTED = 2;
public static final int SOME_SELECTED = 3;
int state = NONE_SELECTED;
public HGCheckBoxTest(int state){
super();
this.addActionListener(this);
this.state = state;
}
public HGCheckBoxTest(Action a){
super(a);
}
public void paintComponent(Graphics g){
if(state == SOME_SELECTED){
this.setSelected(true);
float[] my_kernel = {
0.10f, 0.10f, 0.10f,
0.10f, 0.20f, 0.10f,
0.10f, 0.10f, 0.10f };
ConvolveOp op = new ConvolveOp(new Kernel(3,3, my_kernel), ConvolveOp.EDGE_NO_OP, null);
BufferedImage buf = new BufferedImage(getWidth(),getHeight(), BufferedImage.TYPE_INT_RGB);
super.paintComponent(buf.getGraphics());
Image img = op.filter(buf,null);
g.drawImage(img,0,0,null);
}else{
if(state==ALL_SELECTED){
this.setSelected(true);
}else if(state == NONE_SELECTED){
this.setSelected(false);
}
super.paintComponent(g);
return;
}
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
static int i =1;
public static void main(String[] args){
JFrame frame = new JFrame("test CheckBox");
final HGCheckBoxTest testBox = new HGCheckBoxTest(3);
JButton control = new JButton("change");
control.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int test = i++%3+1;
( testBox).setState(test);
testBox.repaint();
}
});
frame.getContentPane().add(testBox);
frame.getContentPane().add("South",control);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(200,200));
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int test = i++%2+1;
this.setState(test);
//System.out.println(this.isSelected());
//System.out.println(this.getState());
}
}
程序实例截图:
项目截图:
舍弃JIDE方案截图:
原因:无法通过代码设置叶子节点的选择状态。
- 大小: 2.8 KB
- 大小: 9.8 KB
- 大小: 11.2 KB
分享到:
相关推荐
在这个例子中,我们使用JCheckBox组件来渲染复选框。 CheckBoxRenderer类的实现代码如下: ```java class CheckBoxRenderer implements TableCellRenderer { public Component getTableCellRendererComponent...
`DefaultCellEditor`通常使用`JCheckBox`作为其组件,这样我们就可以在`JTable`的单元格中看到复选框。 3. **设置列的类型和编辑器** 在`TableModel`中,我们需要为包含复选框的列指定`Boolean`类型,并使用之前...
在这个小型实验程序中,我们聚焦于"复选框捕捉器"的实现,它能够捕获用户在复选框中的选择,并将这些信息实时地显示在文本框中,同时还可以将选定的内容保存到指定的文件中。如果目标文件不存在,程序会自动创建新...
复选框树的实现主要涉及到以下几个关键知识点: 1. **JTree组件**:JTree是Swing中用于展示层次结构数据的组件,通常用来显示文件系统目录结构或自定义的树状数据。通过DefaultTreeModel或自定义的TreeModel来创建...
本实例"实例12复选框"深入探讨了如何在Java应用程序中使用JCheckBox类来实现这一功能。下面将详细阐述相关知识点。 1. **Swing组件库**: Swing是Java提供的一个图形用户界面(GUI)工具包,它是Java Foundation ...
但引入三态后,JCheckBox也可以展示不确定状态,比如在一个复选框组中,如果部分复选框被选中,而部分未选中,那么整个组的复选框就可以显示为不确定状态。 这个名为"ansir_tristate1.1.0b5"的压缩包很可能包含了一...
在本示例中,我们探讨的是如何实现复选框的功能,包括全选、全不选、反选以及获取选中状态的操作。这些功能在很多应用中都非常实用,例如在表单填写、设置配置或者多选项选择时。 首先,我们要了解复选框的基本概念...
Java Swing组件复选框JCheckBox用法示例 Java Swing组件复选框JCheckBox是Swing中的一种基本组件,用于提供用户选择多个选项的功能。JCheckBox可以同时存在多个选项,并且每个选项都可以有两种状态:选中和未选中。...
在Java Swing库中,`JCheckBox`是一种常用的图形用户界面(GUI)组件,它用于创建复选框。复选框允许用户从多个选项中选择一个或多个,而不仅仅是单个选项,如单选按钮(JRadioButton)所允许的那样。在本篇文章中,...
JCheckBox是Swing中的复选框组件,它允许用户在多个选项中选择多个。通过监听复选框的状态变化,我们可以控制其他组件的行为。例如,当复选框被选中时,可以启用某个按钮;反之,如果复选框未被选中,则禁用该按钮。...
2. **Java/Swing**:在Java桌面应用中,我们可以使用`javax.swing.JCheckBox`类创建复选框。通过`ActionListener`接口处理点击事件。 ```java JCheckBox checkBox = new JCheckBox("Option 1"); checkBox....
在Java编程中,创建用户界面时,我们经常需要使用各种控件来收集用户输入,其中复选框(JCheckBox)是常见的交互元素之一,用于让用户从多个选项中选择多个喜好或同意某项条款。本示例讲解如何通过复选框控件数组...
Java Swing JCheckBox复选框的实现方法 Java Swing JCheckBox复选框是Java Swing中的一种常用控件,用于在图形用户界面中实现复选框的功能。在本文中,我们将详细介绍JCheckBox的实现方法,包括常用构造方法、常用...
本实验旨在使学习者能够熟练掌握Java中的图形用户界面(GUI)组件,包括单选按钮、复选框、文本框和标签等基本元素的使用方法。通过实际操作和编程实践,学习者将深入了解这些组件的工作原理及其在实际项目中的应用...
首先,`JList` 默认并不支持复选框,但我们可以使用 `DefaultListModel` 和 `ListCellRenderer` 来实现这一功能。`DefaultListModel` 用于存储列表中的项,而 `ListCellRenderer` 则负责定制每个列表项的显示方式,...
点都被选中,则选中父结点 TreeNode parent = getParent(); if(parent != null && parent instanceof CheckBoxTreeNode) { CheckBoxTreeNode ...这样的实现方式可以满足在 Swing 应用中使用带复选框的树控件的需求。
在Java的Swing库中,实现复选框(Checkbox)是一种常见的创建图形用户界面(GUI)的方法。复选框允许用户在多个选项中选择一个或多个。本篇将详细讲解如何利用Java Swing来创建和管理复选框,并通过实例代码进行解析...
在Java中,我们通常会使用`JComboBox`作为下拉菜单的基础,配合`JCheckBox`实现复选功能。`JComboBox`可以扩展以添加自定义渲染器和监听器,使其能够显示并处理复选框。 1. **自定义组件**:在Java GUI中,我们可以...
对于复选框,我们可以使用`JCheckBox`作为渲染器。以下是一个基本的`TableCellRenderer`实现: ```java class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { public Component ...
在Java Swing库中,`JCheckBox`是一种常用的用户界面组件,用于创建复选框,用户可以勾选或取消勾选来表示选择或否定一个选项。本篇文章将详细讲解如何在Java中处理`JCheckBox`的事件,以及相关知识点。 首先,`...