package JList;
/**
CheckBoxList
*/
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class MyJList extends JFrame {
protected JList m_list;
protected JLabel m_total;
public MyJList() {
super("Swing List [Check boxes]");
setSize(260, 240);
getContentPane().setLayout(new FlowLayout());
InstallData[] options = { new InstallData("Program executable", 118),
new InstallData("Help files", 52),
new InstallData("Tools and converters", 83),
new InstallData("Source code", 133) };
m_list = new JList(options);
CheckListCellRenderer renderer = new CheckListCellRenderer();
m_list.setCellRenderer(renderer);
m_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
CheckListener lst = new CheckListener(this);
m_list.addMouseListener(lst);
m_list.addKeyListener(lst);
JScrollPane ps = new JScrollPane();
ps.getViewport().add(m_list);
m_total = new JLabel("Space required: 0K");
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(ps, BorderLayout.CENTER);
p.add(m_total, BorderLayout.SOUTH);
p.setBorder(new TitledBorder(new EtchedBorder(),
"Please select options:"));
getContentPane().add(p);
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser);
setVisible(true);
recalcTotal();
}
public void recalcTotal() {
ListModel model = m_list.getModel();
int total = 0;
for (int k = 0; k < model.getSize(); k++) {
InstallData data = (InstallData) model.getElementAt(k);
if (data.isSelected())
total += data.getSize();
}
m_total.setText("Space required: " + total + "K");
}
public static void main(String argv[]) {
new MyJList();
}
}
class CheckListCellRenderer extends JCheckBox implements ListCellRenderer {
protected static Border m_noFocusBorder = new EmptyBorder(1, 1, 1, 1);
public CheckListCellRenderer() {
super();
setOpaque(true);
setBorder(m_noFocusBorder);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
setBackground(isSelected ? list.getSelectionBackground() : list
.getBackground());
setForeground(isSelected ? list.getSelectionForeground() : list
.getForeground());
InstallData data = (InstallData) value;
setSelected(data.isSelected());
setFont(list.getFont());
setBorder((cellHasFocus) ? UIManager
.getBorder("List.focusCellHighlightBorder") : m_noFocusBorder);
return this;
}
}
class CheckListener implements MouseListener, KeyListener {
protected MyJList m_parent;
protected JList m_list;
public CheckListener(MyJList parent) {
m_parent = parent;
m_list = parent.m_list;
}
public void mouseClicked(MouseEvent e) {
if (e.getX() < 20)
doCheck();
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == ' ')
doCheck();
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
protected void doCheck() {
int index = m_list.getSelectedIndex();
if (index < 0)
return;
InstallData data = (InstallData) m_list.getModel().getElementAt(index);
data.invertSelected();
m_list.repaint();
m_parent.recalcTotal();
}
}
public class InstallData {
protected String m_name;
protected int m_size;
protected boolean m_selected;
public InstallData(String name, int size) {
m_name = name;
m_size = size;
m_selected = false;
}
public String getName() {
return m_name;
}
public int getSize() {
return m_size;
}
public void setSelected(boolean selected) {
m_selected = selected;
}
public void invertSelected() {
m_selected = !m_selected;
}
public boolean isSelected() {
return m_selected;
}
public String toString() {
return m_name + " (" + m_size + " K)";
}
}
分享到:
相关推荐
首先,`JList` 默认并不支持复选框,但我们可以使用 `DefaultListModel` 和 `ListCellRenderer` 来实现这一功能。`DefaultListModel` 用于存储列表中的项,而 `ListCellRenderer` 则负责定制每个列表项的显示方式,...
要实现多选,我们需要在下拉列表中使用`JCheckBox`。我们可以创建一个自定义的`ComboBoxRenderer`,使得每个`JComboBox`的项都是一个带有`JCheckBox`的`JPanel`。这样,用户可以通过勾选`JCheckBox`来选择多个选项...
这个“最全的Java Swing示例程序”集合包含了Swing库中的各种组件和功能的实例,对于学习和理解Swing编程非常有帮助。 Swing组件包括但不限于: 1. JFrame:这是Swing中的顶级容器,通常作为应用程序的主窗口。你...
- **MultiComponentTable.java**:此示例展示了如何在一个单元格中组合多个组件(如 JComboBox、JCheckBox 和 JTextField)。 - **MultiComponentTable2.java**:提供了另一个使用多种组件的表格单元格示例。 - **...
在"组件示例源代码"中,我们可以找到这些概念的具体应用,通过阅读和理解代码,可以加深对Swing组件的理解,并能熟练地在实际项目中使用它们来创建用户友好的Java桌面应用。这些例子可能涵盖了各种组件的创建、布局...
- `JCheckBox` 和 `JRadioButton` 分别用于多选和单选选项。 - `JList` 和 `JComboBox` 提供列表选择和下拉选择功能。 - `JTextField`, `JPasswordField`, `JTextArea` 用于文本输入。 - `JToolBar` 创建工具栏...
14.8.5复选框(JcheckBox)使用示例498 14.8.6单选按钮(JradioButton)使用示例500 14.8.7列表框(JList)使用示例502 14.8.8组合框(JComboBox)使用示例506 14.8.9表格(Jtable)使用示例508 14.8.10树...
8. `JCheckBoxExa.java`可能是关于`JCheckBox`组件的使用,`JCheckBox`是Swing中的复选框组件,用户可以点击选择或取消选择。 9. `ListExample.java`可能包含了一个使用`JList`组件的例子,`JList`允许用户从预定义...
9. **ListDemo.java**:展示了`JList`的使用,`JList`用于显示一组单选或复选的项目。可能包括了如何创建列表模型、添加事件监听器、实现多选模式等功能。 10. **InternalFrameDemo.java**:涉及了`JInternalFrame`...
【Java程序设计任务驱动式教程】的第20章,"选择之道",主要讲解了在Java GUI编程中如何使用选择控件和处理选择事件,以实现用户交互。这一章节涵盖了多个关键知识点: 1. **选择控件**: - **JComboBox**: 用于...
这个PPT教案主要讲解了如何使用Java Swing库来创建具有选择性组件的用户界面,包括组合框(JComboBox)、列表框(JList)、单选按钮(JRadioButton)和复选框(JCheckBox),并涉及到了选择事件的处理。 首先,任务...
在这个"Java Swing常用组件应用实例源码.rar"压缩包中,你将找到一系列Swing组件的实际应用示例,以及可能包含的文档,帮助你理解和学习如何在Java开发中使用这些组件。 1. **JFrame** - JFrame是Swing中的主要容器...
本资源“Java Swing 组件全演示源代码”包含了Java Swing中的各种组件的完整示例代码,可以帮助开发者深入理解和实际操作这些组件,提升GUI编程能力。 Swing 提供了大量的组件,包括基础组件如按钮(JButton)、...
在这个例子中,我们创建了一个`DefaultListModel`来存储下拉框的选项,并使用`JCheckBox`作为列表项,这样每个选项都可以被勾选。通过自定义渲染器,我们可以控制哪些选项被标记为已选中。 ### 总结 创建一个多选...
介绍了Jsoup库的使用,用于从网页中抓取数据,并提供了几个示例。 #### 七、异常处理 这部分讲解了Java中的异常机制,包括异常分类、常见异常类型及其处理方法等。 #### 八、面向对象 这部分涉及面向对象的基本...
以上代码示例展示了如何在Java Swing环境中创建和使用这些控件。在实际项目中,这些控件可以组合使用,为用户提供更丰富的交互体验。了解并熟练掌握这些控件的使用,对于开发Java GUI应用程序至关重要。
13. **CheckboxGroup的例子**:在Java Swing中,CheckboxGroup用于管理一组JCheckBox,确保用户只能选择其中的一个。 14. **FileDialog**:Java Swing中的JFileChooser或JavaFX的FileChooser对话框,用于让用户选择...
- JApplet:用于创建Web浏览器中的小程序,但随着现代Web技术的发展,JApplet的使用已经减少。 - JDialog:创建对话框,可以是模态或非模态,用于显示临时信息或接收用户输入。 - JWindow:不常用,它是一个没有...
这样的应用可以帮助学习者更好地理解如何在实际项目中使用Swing组件。 结业复习题可能是一系列的挑战任务,用于检验学习者对Swing的理解程度。这些题目可能要求创建特定的GUI布局,实现特定的功能,或者解决特定的...