📄 checklistexample2.java
字号:
/* (swing1.1.1beta2)*/package tame.examples;import java.awt.BorderLayout;import java.awt.Component;import java.awt.GridLayout;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.ListCellRenderer;import javax.swing.ListModel;import javax.swing.ListSelectionModel;import javax.swing.UIManager;import javax.swing.border.EmptyBorder;/**@author Nobuo Tamemasa@version 1.0 04/26/99*/public class CheckListExample2 extends JFrame { public CheckListExample2() { super("CheckList Example"); String[] strs = {"swing", "home", "basic", "metal", "JList"}; final JList list = new JList( createData(strs) ); list.setCellRenderer(new CheckListRenderer()); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setBorder(new EmptyBorder(0,4,0,0)); list.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int index = list.locationToIndex(e.getPoint()); CheckableItem item = (CheckableItem)list.getModel().getElementAt(index); item.setSelected(! item.isSelected()); Rectangle rect = list.getCellBounds(index, index); list.repaint(rect); } }); JScrollPane sp = new JScrollPane(list); final JTextArea textArea = new JTextArea(3,10); JScrollPane textPanel = new JScrollPane(textArea); JButton printButton = new JButton("print"); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ListModel model = list.getModel(); int n = model.getSize(); for (int i=0;i<n;i++) { CheckableItem item = (CheckableItem)model.getElementAt(i); if (item.isSelected()) { textArea.append(item.toString()); textArea.append(System.getProperty("line.separator")); } } } }); JButton clearButton = new JButton("clear"); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.setText(""); } }); JPanel panel = new JPanel(new GridLayout(2,1)); panel.add(printButton); panel.add(clearButton); getContentPane().add(sp, BorderLayout.CENTER); getContentPane().add(panel, BorderLayout.EAST); getContentPane().add(textPanel, BorderLayout.SOUTH); } private CheckableItem[] createData(String[] strs) { int n = strs.length; CheckableItem[] items = new CheckableItem[n]; for (int i=0;i<n;i++) { items[i] = new CheckableItem(strs[i]); } return items; } class CheckableItem { private String str; private boolean isSelected; public CheckableItem(String str) { this.str = str; isSelected = false; } public void setSelected(boolean b) { isSelected = b; } public boolean isSelected() { return isSelected; } public String toString() { return str; } } class CheckListRenderer extends JCheckBox implements ListCellRenderer { public CheckListRenderer() { setBackground(UIManager.getColor("List.textBackground")); setForeground(UIManager.getColor("List.textForeground")); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) { setEnabled(list.isEnabled()); setSelected(((CheckableItem)value).isSelected()); setFont(list.getFont()); setText(value.toString()); return this; } } public static void main(String args[]) { CheckListExample2 frame = new CheckListExample2(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.setSize(300, 200); frame.setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -