2525
2626public class JFrameTest extends JFrame {
2727
28+ class CheckableItem implements Serializable {
29+ /**
30+ *
31+ */
32+ private static final long serialVersionUID = 1L ;
33+
34+ private boolean isSelected ;
35+
36+ private final String str ;
37+
38+ public CheckableItem (final String str ) {
39+ this .str = str ;
40+ isSelected = false ;
41+ }
42+
43+ public boolean isSelected () {
44+ return isSelected ;
45+ }
46+
47+ public void setSelected (final boolean b ) {
48+ isSelected = b ;
49+ }
50+
51+ @ Override
52+ public String toString () {
53+ return str ;
54+ }
55+ }
56+
57+ class CheckListRenderer extends JCheckBox implements
58+ ListCellRenderer <CheckableItem > {
59+
60+ /**
61+ *
62+ */
63+ private static final long serialVersionUID = 1L ;
64+
65+ public CheckListRenderer () {
66+ setBackground (UIManager .getColor ("List.textBackground" ));
67+ setForeground (UIManager .getColor ("List.textForeground" ));
68+ }
69+
70+ @ Override
71+ public Component getListCellRendererComponent (
72+ final JList <? extends CheckableItem > list ,
73+ final CheckableItem value , final int index ,
74+ final boolean isSelected , final boolean hasFocus ) {
75+ setEnabled (list .isEnabled ());
76+ setSelected (value .isSelected ());
77+ setFont (list .getFont ());
78+ setText (value .toString ());
79+ return this ;
80+ }
81+ }
82+
83+ /**
84+ *
85+ */
86+ private static final long serialVersionUID = 1L ;
87+
88+ public static void main (final String args []) {
89+
90+ final JFrameTest frame = new JFrameTest ();
91+ frame .addWindowListener (new WindowAdapter () {
92+ @ Override
93+ public void windowClosing (final WindowEvent e ) {
94+ System .exit (0 );
95+ }
96+ });
97+ frame .setSize (300 , 200 );
98+ frame .setVisible (true );
99+ }
100+
28101 public JFrameTest () {
29102 super ("CheckList Example" );
30- String [] strs = { "swing" , "home" , "basic" , "metal" , "JList" };
103+ final String [] strs = { "swing" , "home" , "basic" , "metal" , "JList" };
31104
32- final JList list = new JList (createData (strs ));
105+ final JList <CheckableItem > list = new JList <CheckableItem >(
106+ createData (strs ));
33107
34108 list .setCellRenderer (new CheckListRenderer ());
35109 list .setSelectionMode (ListSelectionModel .SINGLE_SELECTION );
36110 list .setBorder (new EmptyBorder (0 , 4 , 0 , 0 ));
37111 list .addMouseListener (new MouseAdapter () {
38- public void mouseClicked ( MouseEvent e ) {
39- int index = list . locationToIndex ( e . getPoint ());
40- CheckableItem item = ( CheckableItem ) list .getModel ()
41- .getElementAt (index );
112+ @ Override
113+ public void mouseClicked ( final MouseEvent e ) {
114+ final int index = list .locationToIndex ( e . getPoint ());
115+ final CheckableItem item = list . getModel () .getElementAt (index );
42116 item .setSelected (!item .isSelected ());
43- Rectangle rect = list .getCellBounds (index , index );
117+ final Rectangle rect = list .getCellBounds (index , index );
44118 list .repaint (rect );
45119 }
46120 });
47- JScrollPane sp = new JScrollPane (list );
121+ final JScrollPane sp = new JScrollPane (list );
48122
49123 final JTextArea textArea = new JTextArea (3 , 10 );
50- JScrollPane textPanel = new JScrollPane (textArea );
51- JButton printButton = new JButton ("print" );
124+ final JScrollPane textPanel = new JScrollPane (textArea );
125+ final JButton printButton = new JButton ("print" );
52126 printButton .addActionListener (new ActionListener () {
53- public void actionPerformed (ActionEvent e ) {
54- ListModel model = list .getModel ();
55- int n = model .getSize ();
127+ @ Override
128+ public void actionPerformed (final ActionEvent e ) {
129+ final ListModel <CheckableItem > model = list .getModel ();
130+ final int n = model .getSize ();
56131 for (int i = 0 ; i < n ; i ++) {
57- CheckableItem item = ( CheckableItem ) model .getElementAt (i );
132+ final CheckableItem item = model .getElementAt (i );
58133 if (item .isSelected ()) {
59134 textArea .append (item .toString ());
60135 textArea .append (System .getProperty ("line.separator" ));
61136 }
62137 }
63138 }
64139 });
65- JButton clearButton = new JButton ("clear" );
140+ final JButton clearButton = new JButton ("clear" );
66141 clearButton .addActionListener (new ActionListener () {
67- public void actionPerformed (ActionEvent e ) {
142+ @ Override
143+ public void actionPerformed (final ActionEvent e ) {
68144 textArea .setText ("" );
69145 }
70146 });
71- JPanel panel = new JPanel (new GridLayout (2 , 1 ));
147+ final JPanel panel = new JPanel (new GridLayout (2 , 1 ));
72148 panel .add (printButton );
73149 panel .add (clearButton );
74150
@@ -77,68 +153,12 @@ public void actionPerformed(ActionEvent e) {
77153 getContentPane ().add (textPanel , BorderLayout .SOUTH );
78154 }
79155
80- private CheckableItem [] createData (String [] strs ) {
81- int n = strs .length ;
82- CheckableItem [] items = new CheckableItem [n ];
156+ private CheckableItem [] createData (final String [] strs ) {
157+ final int n = strs .length ;
158+ final CheckableItem [] items = new CheckableItem [n ];
83159 for (int i = 0 ; i < n ; i ++) {
84160 items [i ] = new CheckableItem (strs [i ]);
85161 }
86162 return items ;
87163 }
88-
89- class CheckableItem implements Serializable {
90- private String str ;
91-
92- private boolean isSelected ;
93-
94- public CheckableItem (String str ) {
95- this .str = str ;
96- isSelected = false ;
97- }
98-
99- public void setSelected (boolean b ) {
100- isSelected = b ;
101- }
102-
103- public boolean isSelected () {
104- return isSelected ;
105- }
106-
107- public String toString () {
108- return str ;
109- }
110- }
111-
112- class CheckListRenderer extends JCheckBox implements ListCellRenderer {
113-
114- public CheckListRenderer () {
115- setBackground (UIManager .getColor ("List.textBackground" ));
116- setForeground (UIManager .getColor ("List.textForeground" ));
117- }
118-
119- public Component getListCellRendererComponent (JList list , Object value ,
120- int index , boolean isSelected , boolean hasFocus ) {
121- setEnabled (list .isEnabled ());
122- setSelected (((CheckableItem ) value ).isSelected ());
123- setFont (list .getFont ());
124- setText (value .toString ());
125- return this ;
126- }
127- }
128-
129- public static void main (String args []) {
130- try {
131- UIManager .setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel" );
132- } catch (Exception evt ) {
133- }
134-
135- JFrameTest frame = new JFrameTest ();
136- frame .addWindowListener (new WindowAdapter () {
137- public void windowClosing (WindowEvent e ) {
138- System .exit (0 );
139- }
140- });
141- frame .setSize (300 , 200 );
142- frame .setVisible (true );
143- }
144164}
0 commit comments