import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Main { public static void main(String[] args){ JFrame test=new ListFrame(); test.setTitle("ListTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } } class ListFrame extends JFrame{ private static final int DEFAULT_WIDTH=400; private static final int DEFAULT_HEIGHT=300; private JPanel listPanel; private JList<String> wordList; private JLabel label; private JPanel buttonPanel; private ButtonGroup group; private String prefix="The "; private String suffix="fox jumps over the lazy dog."; public ListFrame(){ 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(listSelectionEvent->{ StringBuilder text=new StringBuilder(prefix); for(String value:wordList.getSelectedValuesList()){ text.append(value+' '); } text.append(suffix); label.setText(text.toString()); }); buttonPanel =new JPanel(); group=new ButtonGroup(); makeButton("Vertical", JList.VERTICAL); makeButton("Vertical Wrap",JList.VERTICAL_WRAP); makeButton("Horizontal Wrap",JList.HORIZONTAL_WRAP); add(listPanel, BorderLayout.NORTH); label=new JLabel(prefix+suffix); add(label, BorderLayout.CENTER); add(buttonPanel, BorderLayout.SOUTH); } private void makeButton(String label,final int orientation){ JRadioButton button =new JRadioButton(label); buttonPanel.add(button); if(group.getButtonCount()==0) button.setSelected(true); group.add(button); button.addActionListener(event->{ wordList.setLayoutOrientation(orientation); listPanel.revalidate(); }); } }
Java核心技术技术卷2 程序清单6-1
最新推荐文章于 2023-07-15 11:14:17 发布