ComboBox List

34
I. JComboBox 1. Một số phương thức của lớp JComboBox: S t t Phương thức Chức năng 1 void addItem (Object item) Thêm mục vào danh sách các mục . 2 void setEditable (Boolean aFlag) Thiết lập thuộc tính thể chỉnh sửa của JComboBox . 3 boolean isEditable () Lấy thuộc tính có thể chỉnh sửa mục của JComboBox . 4 void insertItemAt (Object item, int index) Chèn một mục vào danh sách mục tại một chỉ số xác định . 5 void removeItem (Object item) Xóa mục từ danh sách mục . 6 void removeItemAt (int index) Xóa mục tại chỉ số xác định. 7 void removeAllItems () Xóa tất cả các mục từ danh sách mục . 8 Object getSelectedItem () Trả về giá trị hiện đang được chọn . 9 void setBackground (Color bg) Thiết lập màu nền cho JComboBox 1 0 void setEnable (Boolean b) Thiết lập không cho phép tác động lên JComboBox, đồng thời làm mờ nó đi. 1 1 void addActionListener (ActionListener l) Thêm bộ lắng nghe cho JComboBox. 1 void setBounds (int x, Thiết lập vị trí, kích

Transcript of ComboBox List

Page 1: ComboBox List

I. JComboBox1. M t s ph ng th c c a l p JComboBox:ộ ố ươ ứ ủ ớStt Phương thức Chức năng1 void addItem (Object item) Thêm mục vào danh sách các mục.2 void setEditable (Boolean aFlag) Thiết lập thuộc tính có thể chỉnh

sửa của JComboBox.3 boolean isEditable () Lấy thuộc tính có thể chỉnh sửa mục

của JComboBox.4 void insertItemAt (Object item, int

index)Chèn một mục vào danh sách mục tại một chỉ số xác định.

5 void removeItem (Object item) Xóa mục từ danh sách mục .6 void removeItemAt (int index) Xóa mục tại chỉ số xác định.7 void removeAllItems () Xóa tất cả các mục từ danh sách mục .8 Object getSelectedItem () Trả về giá trị hiện đang được chọn.9 void setBackground (Color bg) Thiết lập màu nền cho JComboBox10 void setEnable (Boolean b) Thiết lập không cho phép tác động lên

JComboBox, đồng thời làm mờ nó đi.11 void addActionListener

(ActionListener l)Thêm bộ lắng nghe cho JComboBox.

12 void setBounds (int x, int y, int width, int height)

Thiết lập vị trí, kích thước cho JComboBox.

- Chương trình ComboBoxTest.java sau minh họa cho 10 phương thức trên:package comboboxtest;import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class ComboBoxTest { public static void main(String[] args) { ComboBoxFrame frame=new ComboBoxFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }}class ComboBoxFrame extends JFrame{

Page 2: ComboBox List

private JComboBox cbb; private JRadioButton Editable; private JRadioButton non_Editable; private JRadioButton addItem; private JRadioButton insertItemAt; private JRadioButton removeItem; private JRadioButton removeItemAt; private JRadioButton removeAllItems; private ButtonGroup btngroup1; private ButtonGroup btngroup2; private JLabel lb; private JLabel lb1; private JLabel lb2; private JLabel lb3; private JLabel lb4; private JButton additem; private JButton kiemtra; private JButton anhien; private JTextField objectitem; private JTextField index; private static final int DEFAULT_SIZE=18; public ComboBoxFrame() { this.setTitle("ComboBoxTest"); this.setSize(400, 400); setLayout(null); lb=new JLabel("Chương trinh ComboBox test"); lb.setFont(new Font("Serif",Font.PLAIN,DEFAULT_SIZE)); lb.setForeground(Color.blue); lb.setBounds(20, 0, 250, 30); add(lb); lb1=new JLabel(); lb1.setBounds(50,90,120,20); lb1.setVisible(false); add(lb1); lb2=new JLabel();

Page 3: ComboBox List

lb2.setBounds(150,90,120,20); lb2.setVisible(false); add(lb2); lb3=new JLabel("Serif"); lb3.setFont(new Font("Serif",Font.PLAIN,DEFAULT_SIZE)); lb3.setForeground(Color.blue); lb3.setBounds(270, 0, 100, 30); add(lb3); lb4=new JLabel("ComboBox co the chinh sua duoc khong?"); lb4.setFont(new Font("Serif",Font.PLAIN,DEFAULT_SIZE)); lb4.setForeground(Color.blue); lb4.setBounds(30, 250, 400, 30); add(lb4); Editable=new JRadioButton(); Editable.setText("Editable"); Editable.setBounds(50, 30, 100, 20); add(Editable); non_Editable=new JRadioButton(); non_Editable.setText("Non Editable"); non_Editable.setSelected(true); non_Editable.setBounds(150, 30, 100, 20); add(non_Editable); addItem=new JRadioButton(); addItem.setText("addItem"); addItem.setBounds(50, 60, 100, 20); add(addItem); insertItemAt=new JRadioButton(); insertItemAt.setText("insertItemAt"); insertItemAt.setBounds(150, 60, 100, 20); add(insertItemAt); removeItem=new JRadioButton(); removeItem.setText("removeItem"); removeItem.setBounds(30, 140, 110, 20);

Page 4: ComboBox List

add(removeItem); removeItemAt=new JRadioButton(); removeItemAt.setText("removeItemAt"); removeItemAt.setBounds(140, 140, 110, 20); add(removeItemAt); removeAllItems=new JRadioButton(); removeAllItems.setText("removeAllItems"); removeAllItems.setBounds(250, 140, 120, 20); add(removeAllItems); btngroup1=new ButtonGroup(); btngroup1.add(Editable); btngroup1.add(non_Editable); btngroup2=new ButtonGroup(); btngroup2.add(addItem); btngroup2.add(insertItemAt); btngroup2.add(removeItem); btngroup2.add(removeItemAt); btngroup2.add(removeAllItems); objectitem=new JTextField(); objectitem.setBounds(50,110,100,20); objectitem.setVisible(false); add(objectitem); index=new JTextField(); index.setBounds(150,110,100,20); index.setVisible(false); add(index); additem=new JButton("add item"); additem.setBounds(100,170,130,30); additem.setEnabled(false); add(additem); kiemtra=new JButton("kiem tra"); kiemtra.setBounds(100, 280, 130, 30);

Page 5: ComboBox List

add(kiemtra); anhien=new JButton("Enable true"); anhien.setBounds(100, 320, 130, 30); add(anhien); cbb=new JComboBox(); cbb.setBounds(100,220,130,25); cbb.setBackground(Color.GREEN); cbb.addItem("Serif"); cbb.addItem("SansSerif"); add(cbb); //cbb.addItem("Monospaced"); //cbb.addItem("Dialog"); //cbb.addItem("DialogInput"); cbb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lb.setFont(new Font((String)cbb.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE)); lb3.setText(String.valueOf(cbb.getSelectedItem())); } }); Editable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cbb.setEditable(true); cbb.setBackground(Color.BLUE); } }); non_Editable.addActionListener(new ActionListener() { @Override

Page 6: ComboBox List

public void actionPerformed(ActionEvent e) { cbb.setEditable(false); cbb.setBackground(Color.GREEN); } }); addItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lb1.setVisible(true); objectitem.setVisible(true); lb2.setVisible(false); index.setVisible(false); additem.setEnabled(true); lb1.setText("add object item"); additem.setText("addItem"); } }); insertItemAt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lb1.setVisible(true); objectitem.setVisible(true); lb2.setVisible(true); index.setVisible(true); additem.setEnabled(true); lb1.setText("add object item"); lb2.setText("add tai index"); additem.setText("insertItemAt"); } }); removeItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) {

Page 7: ComboBox List

lb1.setVisible(true); objectitem.setVisible(true); lb2.setVisible(false); index.setVisible(false); additem.setEnabled(true); lb1.setText("remove object item"); additem.setText("removeItem"); } }); removeItemAt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lb1.setVisible(false); objectitem.setVisible(false); lb2.setVisible(true); index.setVisible(true); additem.setEnabled(true); lb2.setText("remove at index"); additem.setText("removeItemAt"); } }); removeAllItems.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { additem.setText("removeAllItems"); additem.setEnabled(true); lb1.setVisible(false); objectitem.setVisible(false); lb2.setVisible(false); index.setVisible(false); } }); additem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e)

Page 8: ComboBox List

{ lb1.setVisible(false); objectitem.setVisible(false); lb2.setVisible(false); index.setVisible(false); additem.setEnabled(false); if(addItem.isSelected()) { cbb.addItem(objectitem.getText()); } else if(insertItemAt.isSelected()) { cbb.insertItemAt(objectitem.getText(), Integer.parseInt(index.getText())); } else if(removeItem.isSelected()) { cbb.removeItem(objectitem.getText()); } else if(removeItemAt.isSelected()) { cbb.removeItemAt(Integer.parseInt(index.getText())); } else { cbb.removeAllItems(); } objectitem.setText(null); index.setText(null); } }); anhien.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(anhien.getText()=="Enable true")

Page 9: ComboBox List

{ cbb.setEnabled(false); anhien.setText("Enable false"); } else { cbb.setEnabled(true); anhien.setText("Enable true"); } } }); kiemtra.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(cbb.isEditable()) { lb4.setText("co the chinh sua duoc ComboBox"); lb4.setBounds(40, 250, 300, 30); } else { lb4.setText("khong the chinh sua duoc ComboBox"); lb4.setBounds(30, 250, 300, 30); } } }); }}

II. List1. Một số phương thức của lớp JList:Stt Phương thức Chức năng1 void setVisibleRowCount (int

visibleRowCount)Thiết lập số dòng hiển thị của List

2 void setLayoutOrientation (int layoutOrientation)

Thiết lập định hướng bố trí cho List. Có 3 giá trị sau:VERTICAL: Sắp xếp các mục theo chiều

Page 10: ComboBox List

dọc.VERTICAL_WRAP: Bắt đầu cột mới nếu có số mục nhiều hơn số hàng hiển thị.HORIZONTAL_WRAP: Bắt đầu hàng mới nếu có số mục nhiều hơn số cột hiển thị.

3 void setSelectionMode (ListSelectionModel selectionModel)

Thiết lập chế độ lựa chọn cho List.SINGLE_SELECTION: chọn một mục tại 1 thời điểm.SINGLE_INTERVAL_SELECTION: chọn một mục hoặc 1 phạm vi của mục.MULTIPLE_INTERVAL_SELECTION: chọn một hoặc nhiều khoảng liền kề của các chỉ số tại một thời điểm.

4 Object[] getSelectedValues () Trả về một mảng của tất cả các giá trị được chọn

5 void addListSelectionListener(ListSelectionListener listener)

Thêm vào danh sách một listener được thông báo mỗi khi thay đổi lựa chọn xảy ra.

- Chương trình ListTest.java sau minh h a cho 5 ph ng th c trên:ọ ươ ứpackage listtest;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;

public class ListTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new ListFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);

Page 11: ComboBox List

} }); } } class ListFrame extends JFrame { private static final int DEFAULT_WIDTH = 500; private static final int DEFAULT_HEIGHT = 300; private JPanel listPanel; private JPanel buttonPanel; private JPanel buttonPanel1; private JList wordList; private JLabel label; private ButtonGroup group; private ButtonGroup group1; private String prefix = "The "; private String suffix = "fox jumps over the lazy dog."; public ListFrame() { setTitle("ListTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

String[] words = { "quick", "brown", "hungry", "wild", "silent", "huge", "private", "abstract", "static", "final" };

wordList = new JList(words); wordList.setVisibleRowCount(4); JScrollPane scrollPane = new JScrollPane(wordList);

listPanel = new JPanel(); listPanel.add(scrollPane); wordList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent event) { Object[] values = wordList.getSelectedValues();

Page 12: ComboBox List

StringBuilder text = new StringBuilder(prefix); for (int i = 0; i < values.length; i++) { String word = (String) values[i]; text.append(word); text.append(" "); } text.append(suffix); label.setText(text.toString()); } });

buttonPanel = new JPanel(); buttonPanel1 = new JPanel(); group = new ButtonGroup(); group1 = new ButtonGroup(); makeButton("Vertical", JList.VERTICAL); makeButton("Vertical Wrap", JList.VERTICAL_WRAP); makeButton("Horizontal Wrap", JList.HORIZONTAL_WRAP); makeButton1("Single selection", ListSelectionModel.SINGLE_SELECTION); makeButton1("Single interval selction", ListSelectionModel.SINGLE_INTERVAL_SELECTION); makeButton1("Multiple interval selection", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); label = new JLabel(prefix + suffix); add(listPanel, BorderLayout.NORTH); add(label, BorderLayout.LINE_START); add(buttonPanel, BorderLayout.SOUTH); add(buttonPanel1, BorderLayout.LINE_END); } private void makeButton(String label, final int orientation) {

Page 13: ComboBox List

JRadioButton button = new JRadioButton(label); buttonPanel.add(button); if (group.getButtonCount() == 0) button.setSelected(true); group.add(button); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { wordList.setLayoutOrientation(orientation); listPanel.revalidate(); } }); } private void makeButton1(String label,final int selectionMode) { JRadioButton button1 = new JRadioButton(label); buttonPanel1.add(button1); if (group1.getButtonCount() == 0) button1.setSelected(true); group1.add(button1); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { wordList.setSelectionMode(selectionMode); listPanel.revalidate(); } }); } }

2. Một số phương thức của lớp JList:Stt Phương thức Chức năng1 void setPrototypeCellValue (Object

newValue)Thiết lập giá trị cell nguyên mẫu để xác định chiều rộng và chiều cao của mỗi cell trong danh sách

Page 14: ComboBox List

2 void setFixedCellWidth (int width) Thiết lập chiều rộng (pixel) của mỗi ô trong danh sách

3 void setFixedCellHeight(int height) Thiết lập chiều cao (pixel) của mỗi ô trong danh sách

4 int getSize() Trả về số các kích thước của List.

- Chương trình LongListTest.java sau minh họa cho 4 phương thức trên:package longlisttest;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import javax.swing.event.*;

public class LongListTest{ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new LongListFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } }

class LongListFrame extends JFrame{ public LongListFrame() { setTitle("LongListTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

wordList = new JList(new WordListModel(3)); wordList.setVisibleRowCount(5);

Page 15: ComboBox List

wordList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane scrollPane = new JScrollPane(wordList); cellvalue=new JCheckBox("PrototypeCellValue"); cellWidth=new JCheckBox("setFixedCellWidth"); cellHeight=new JCheckBox("setFixedCellHeight"); cellvalue1=new JTextField(8); cellWidth1=new JTextField(8); cellHeight1=new JTextField(8); cellvalue2=new JButton("Thiet lap"); cellvalue2.setEnabled(false); getSize=new JButton("getSize"); buttonPanel=new JPanel(); buttonPanel1=new JPanel(); listPanel=new JPanel(); listPanel.add(scrollPane); label = new JLabel(prefix + suffix); add(listPanel,BorderLayout.SOUTH); setSubject("fox"); buttonPanel.add(cellvalue); buttonPanel.add(cellvalue1); buttonPanel.add(cellvalue2); buttonPanel1.add(cellWidth); buttonPanel1.add(cellHeight); buttonPanel1.add(cellWidth1); buttonPanel1.add(cellHeight1); buttonPanel1.add(label); buttonPanel1.add(getSize); add(buttonPanel,BorderLayout.PAGE_START);

Page 16: ComboBox List

add(buttonPanel1,BorderLayout.CENTER); wordList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent evt) { StringBuilder word = (StringBuilder) wordList.getSelectedValue(); setSubject(word.toString()); }

}); cellvalue.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(cellvalue.isSelected()) { cellvalue2.setEnabled(true); cellWidth.setEnabled(false); cellHeight.setEnabled(false); } else { cellvalue2.setEnabled(false); cellWidth.setEnabled(true); cellHeight.setEnabled(true); } } }); cellWidth.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(cellWidth.isSelected() || cellHeight.isSelected()) {

Page 17: ComboBox List

cellvalue2.setEnabled(true); cellvalue.setEnabled(false); } else { cellvalue2.setEnabled(false); cellvalue.setEnabled(true); } } }); cellHeight.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(cellWidth.isSelected() || cellHeight.isSelected()) { cellvalue2.setEnabled(true); cellvalue.setEnabled(false); } else { cellvalue2.setEnabled(false); cellvalue.setEnabled(true); } } }); cellvalue2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(cellvalue.isSelected()) { wordList.setPrototypeCellValue(cellvalue1.getText()); cellvalue2.setEnabled(false); cellvalue.setSelected(false); cellWidth.setEnabled(true);

Page 18: ComboBox List

cellHeight.setEnabled(true); } if(cellWidth.isSelected()&& cellHeight.isSelected()) { wordList.setFixedCellWidth(Integer.parseInt(cellWidth1.getText())); wordList.setFixedCellHeight(Integer.parseInt(cellHeight1.getText())); cellWidth.setSelected(false); cellHeight.setSelected(false); cellvalue2.setEnabled(false); cellvalue.setEnabled(true); } else { if(cellWidth.isSelected()||cellHeight.isSelected()) { if(cellWidth.isSelected()) { wordList.setFixedCellWidth(Integer.parseInt(cellWidth1.getText())); cellvalue2.setEnabled(false); cellWidth.setSelected(false); cellvalue.setEnabled(true); } else { wordList.setFixedCellHeight(Integer.parseInt(cellHeight1.getText())); cellvalue2.setEnabled(false); cellHeight.setSelected(false); cellvalue.setEnabled(true); } } } } }); getSize.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e)

Page 19: ComboBox List

{ if(getSize.getText()=="getSize") { getSize.setText(wordList.getSize().toString()); } else { getSize.setText("getSize"); } } }); }

public void setSubject(String word) { StringBuilder text = new StringBuilder(prefix); text.append(word); text.append(suffix); label.setText(text.toString()); }

private static final int DEFAULT_WIDTH = 350; private static final int DEFAULT_HEIGHT = 300; private JList wordList; private JPanel listPanel; private JPanel buttonPanel; private JPanel buttonPanel1; private JLabel label; private JCheckBox cellvalue; private JCheckBox cellWidth; private JCheckBox cellHeight; private JTextField cellvalue1; private JTextField cellWidth1; private JTextField cellHeight1; private JButton cellvalue2; private JButton getSize; private String prefix = "The quick brown "; private String suffix = " jumps over the lazy dog.";}class WordListModel extends AbstractListModel

Page 20: ComboBox List

{ public WordListModel(int n) { length = n; }

@Override public int getSize() { return (int) Math.pow(LAST - FIRST + 1, length); }

@Override public Object getElementAt(int n) { StringBuilder r = new StringBuilder(); ; for (int i = 0; i < length; i++) { char c = (char) (FIRST + n % (LAST - FIRST + 1)); r.insert(0, c); n = n / (LAST - FIRST + 1); } return r; }

private int length; public static final char FIRST = 'a'; public static final char LAST = 'z';}

3. M t s ph ng th c c a l p JList:ộ ố ươ ứ ủ ớStt Phương thức Chức năng1 Color getBackground() Trả về màu nền cho ô không được chọn2

Color getSelectionBackground()Trả về màu nền cho ô được chọn

3Color getForeground()

Trả về màu chữ cho ô không được chọn

Page 21: ComboBox List

4 Color getSelectionForeground() Trả về màu chữ cho ô được chọn5 Color setBackground (Color bg) Thiết lập màu nền cho ô không được chọn6 Color setSelectionBackground

(Color selectionBackground)Thiết lập màu nền cho ô được chọn

7Color setForeground(Color fg)

Thiết lập màu chữ cho ô không được chọn

8 Color setSelectionForeground (Color selectionForeground)

Thiết lập màu chữ cho ô được chọn

- Chương trình ListRenderingTest.java sau minh họa cho 8 phương thức trên:package listrenderingtest;import java.awt.event.ActionEvent;import java.util.*; import java.awt.*;

import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.event.*;

public class ListRenderingTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new ListRenderingFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } }

class ListRenderingFrame extends JFrame {

Page 22: ComboBox List

public ListRenderingFrame() { setTitle("ListRenderingTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

ArrayList<Font> fonts = new ArrayList<Font>(); final int SIZE = 24; fonts.add(new Font("Serif", Font.PLAIN, SIZE)); fonts.add(new Font("SansSerif", Font.PLAIN, SIZE)); fonts.add(new Font("Monospaced", Font.PLAIN, SIZE)); fonts.add(new Font("Dialog", Font.PLAIN, SIZE)); fonts.add(new Font("DialogInput", Font.PLAIN, SIZE)); fontList = new JList(fonts.toArray()); fontList.setVisibleRowCount(4); fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontList.setCellRenderer(new FontCellRenderer()); fontList.setBackground(Color.GRAY); fontList.setSelectionBackground(Color.BLUE); fontList.setForeground(Color.RED); fontList.setSelectionForeground(Color.GREEN); bg_slbg=new JButton("bg unselected_selected"); fg_slfg=new JButton("fg unselected_selected"); luubg=bg_slbg.getBackground(); JScrollPane scrollPane = new JScrollPane(fontList);

JPanel p = new JPanel(); JPanel btg=new JPanel(); p.add(scrollPane); fontList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent evt) { bg=fontList.getBackground(); slbg=fontList.getSelectionBackground();

Page 23: ComboBox List

fg=fontList.getForeground(); slfg=fontList.getSelectionForeground(); bg_slbg.setBackground(bg); bg_slbg.setForeground(slbg); fg_slfg.setBackground(fg); fg_slfg.setForeground(slfg); Font font = (Font) fontList.getSelectedValue(); text.setFont(font); }

}); bg_slbg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { bg_slbg.setBackground(luubg); bg_slbg.setForeground(Color.BLACK); } }); fg_slfg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { fg_slfg.setBackground(luubg); fg_slfg.setForeground(Color.BLACK); } });

Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.SOUTH); text = new JTextArea("The quick brown fox jumps over the lazy dog"); text.setFont((Font) fonts.get(0)); text.setLineWrap(true); text.setWrapStyleWord(true);

Page 24: ComboBox List

contentPane.add(text, BorderLayout.PAGE_START); btg.add(bg_slbg); btg.add(fg_slfg); contentPane.add(btg,BorderLayout.CENTER); }

private JTextArea text; private JList fontList; private Color bg; private Color slbg; private Color fg; private Color slfg; private Color luubg; private JButton bg_slbg; private JButton fg_slfg; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 280; }

class FontCellRenderer extends JComponent implements ListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { font = (Font) value; background = isSelected ? list.getSelectionBackground() : list.getBackground(); foreground = isSelected ? list.getSelectionForeground() : list.getForeground(); return this; }

@Override public void paintComponent(Graphics g) { String text = font.getFamily(); FontMetrics fm = g.getFontMetrics(font); g.setColor(background); g.fillRect(0, 0, getWidth(), getHeight());

Page 25: ComboBox List

g.setColor(foreground); g.setFont(font); g.drawString(text, 0, fm.getAscent()); }

@Override public Dimension getPreferredSize() { String text = font.getFamily(); Graphics g = getGraphics(); FontMetrics fm = g.getFontMetrics(font); return new Dimension(fm.stringWidth(text), fm.getHeight()); }

private Font font; private Color background; private Color foreground; }

Page 26: ComboBox List