zoukankan      html  css  js  c++  java
  • 第五次作业

    public class wj extends JFrame
    implements ChangeListener, ActionListener
    {
    private static final String VERSION = "Version 1.0";
    private static final String WENJ_DIR = "文件";

    private JList fileList;
    private SoundEngine player;

    public static void main(String[] args)
    {
    wj gui = new wj();
    }

    public wj()
    {
    super("文件");
    player = new SoundEngine();
    String[] FileNames = findFiles(WENJ_DIR, null);
    makeFrame(FileNames);
    }

    private void quit()
    {
    System.exit(0);
    }

    private void showAbout()
    {
    JOptionPane.showMessageDialog(this,
    "文件 " + VERSION,
    "About 文件",
    JOptionPane.INFORMATION_MESSAGE);
    }

    private String[] findFiles(String dirName, String suffix)
    {
    File dir = new File(dirName);
    if(dir.isDirectory()) {
    String[] allFiles = dir.list();
    if(suffix == null) {
    return allFiles;
    }
    else {
    List selected = new ArrayList();
    for(String filename : allFiles) {
    if(filename.endsWith(suffix)) {
    selected.add(filename);
    }
    }
    return selected.toArray(new String[selected.size()]);
    }
    }
    else {
    System.out.println("Error: " + dirName + " must be a directory");
    return null;
    }
    }

    public void stateChanged(ChangeEvent evt)
    {

    }

    //添加监听器
    public void actionPerformed(ActionEvent evt)
    {
    JComboBox cb = (JComboBox)evt.getSource();
    String format = (String)cb.getSelectedItem();
    if(format.equals("all")) {
    format = null;
    }
    fileList.setListData(findFiles(WENJ_DIR, format));
    }

    private void makeFrame(String[] Files)
    {

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    
    JPanel contentPane = (JPanel)getContentPane();
    contentPane.setBorder(new EmptyBorder(6, 10, 10, 10));
    
    makeMenuBar();
    
    
    contentPane.setLayout(new BorderLayout(8, 8));
    
    
    JPanel leftPane = new JPanel();
    {
        leftPane.setLayout(new BorderLayout(8, 8));
    
        String[] formats = { "all", ".doc", ".png", ".mp3" };
    
      
        JComboBox formatList = new JComboBox(formats);
        formatList.addActionListener(this);
        leftPane.add(formatList, BorderLayout.NORTH);
    
    
        fileList = new JList(Files);
        fileList.setForeground(new Color(140,171,226));
        fileList.setBackground(new Color(0,0,0));
        fileList.setSelectionBackground(new Color(87,49,134));
        fileList.setSelectionForeground(new Color(140,171,226));
        JScrollPane scrollPane = new JScrollPane(fileList);
        scrollPane.setColumnHeaderView(new JLabel("wenj files"));
        leftPane.add(scrollPane, BorderLayout.CENTER);
    }
    contentPane.add(leftPane, BorderLayout.CENTER);
    
    pack();
    
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation(d.width/2 - getWidth()/2, d.height/2 - getHeight()/2);
    setVisible(true);
    

    }
    //设置菜单项
    private void makeMenuBar()
    {
    final int SHORTCUT_MASK =
    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();

    JMenuBar menubar = new JMenuBar();
    setJMenuBar(menubar);
    
    JMenu menu;
    JMenuItem item;
    
    
    menu = new JMenu("File");
    menubar.add(menu);
    
    item = new JMenuItem("Quit");
        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
        item.addActionListener(new ActionListener() {
                           public void actionPerformed(ActionEvent e) { quit(); }
                       });
    menu.add(item);
    
    
    menu = new JMenu("Help");
    menubar.add(menu);
    
    item = new JMenuItem("About ...");
        item.addActionListener(new ActionListener() {
                           public void actionPerformed(ActionEvent e) { showAbout(); }
                       });
    menu.add(item);
    

    }
    }

  • 相关阅读:
    SQL中的数据库设计三范式
    SQL中的DBA命令
    SQL中的视图
    SQL中的索引
    十大程序员必逛网站
    解放双手!你不知道的代码生成神器
    IT体系的演变
    Nginx的六种负载均衡策略
    前端Chrome调试小技巧汇总
    spring boot:使用async异步线程池发送注册邮件(spring boot 2.3.1)
  • 原文地址:https://www.cnblogs.com/jxfcc/p/5403501.html
Copyright © 2011-2022 走看看