⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listbar.java

📁 java+eclipse做的TTPlayer
💻 JAVA
字号:
/* * ListBar.java * * Created on 2008年1月5日, 下午10:49 */package com.hadeslee.yoyoplayer.setting;import com.hadeslee.yoyoplayer.util.Util;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Image;import java.awt.Rectangle;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Vector;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.ListCellRenderer;import javax.swing.ListModel;import javax.swing.ListSelectionModel;import javax.swing.SwingUtilities;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.plaf.basic.BasicListUI;/** * * @author  Administrator */public class ListBar extends javax.swing.JPanel implements MouseListener, MouseMotionListener {    private Vector<String> names;//存放列表里面的名字    private Map<String, Component> map;//用于存放名字对应的内容面板的映射    private int onIndex = -1;//鼠标所在的对应列表的下标    /** Creates new form ListBar */    public ListBar() {        initComponents();        initOther();    }    private void initOther() {        map = new HashMap<String, Component>();        names = new Vector<String>();        list.setUI(new YOYOListUI());        list.setFixedCellHeight(25);        list.addMouseListener(this);        list.addListSelectionListener(new ListSelectionListener() {            public void valueChanged(ListSelectionEvent e) {                if (!e.getValueIsAdjusting()) {                    updateSelected();                }            }        });        list.addMouseMotionListener(this);        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    }    public int getBarComponentCount() {        return map.size();    }    public Component getBarComponent(int index) {        return map.get(names.get(index));    }    public Component getComponent(String name) {        return map.get(name);    }    private void updateSelected() {        Object value = list.getSelectedValue();        if (value != null) {            String name = value.toString();            Component com = map.get(name);            if (com != null) {                content.removeAll();                content.add(com, BorderLayout.CENTER);//                content.revalidate();                SwingUtilities.updateComponentTreeUI(content);            }        }    }    public void addComponent(String name, Component com) {        if (!names.contains(name)) {            names.add(name);        }        Dimension size = com.getPreferredSize();        Dimension me = content.getPreferredSize();        me.width = size.width > me.width ? size.width : me.width;        me.height = size.height > me.height ? size.height : me.height;        content.setPreferredSize(me);        map.put(name, com);        list.setListData(names);    }    public void setSelectedComponent(String name) {        Component com = map.get(name);        if (com != null) {            list.setSelectedValue(name, true);            content.removeAll();            content.add(com, BorderLayout.CENTER);//                content.revalidate();            SwingUtilities.updateComponentTreeUI(content);        }    }    public void removeComponent(String name) {    }    public void removeComponent(Component com) {    }    private class YOYOListUI extends BasicListUI {        private Image line,  select;        public YOYOListUI() {            try {                line = ImageIO.read(this.getClass().getResource("line.png"));                select = ImageIO.read(this.getClass().getResource("select.png"));            } catch (IOException ex) {                Logger.getLogger(ListBar.class.getName()).log(Level.SEVERE, null, ex);            }        }        @Override        protected void paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer cellRenderer, ListModel dataModel, ListSelectionModel selModel, int leadIndex) {            int width = rowBounds.width;            int height = rowBounds.height;            int x = rowBounds.x;            int y = rowBounds.y;            g.translate(x, y);            String s = dataModel.getElementAt(row).toString();            g.setColor(Color.BLACK);            Util.drawString(g, s, (width - Util.getStringWidth(s, g)) / 2, (height - Util.getStringHeight(s, g)) / 2);            if (selModel.isSelectedIndex(row)) {                g.setColor(new Color(48, 106, 198));                g.fillRect(0, 0, rowBounds.width, rowBounds.height);                g.setColor(Color.WHITE);                Util.drawString(g, s, (width - Util.getStringWidth(s, g)) / 2, (height - Util.getStringHeight(s, g)) / 2);                g.drawImage(line, (width - line.getWidth(list)) / 2, height - 1, list);                g.drawImage(select, 2, (height - select.getHeight(list)) / 2, list);                g.setColor(new Color(120,149,226));                g.drawRect(0, 0, width-1, height-1);                g.setColor(new Color(192, 192, 255));                g.drawLine(0, height-1, width, height-1);            } else {                g.drawImage(line, (width - line.getWidth(list)) / 2, height - 1, list);            }            if (row == onIndex) {                g.setColor(new Color(151, 180, 226));                g.fillRect(0, 0, rowBounds.width, rowBounds.height);                g.setColor(Color.WHITE);                Util.drawString(g, s, (width - Util.getStringWidth(s, g)) / 2, (height - Util.getStringHeight(s, g)) / 2);                g.setColor(new Color(120, 149, 226));                g.drawLine(0, height-1, width, height-1);            }            g.translate(0 - x, 0 - y);        }    }    public void mouseClicked(MouseEvent e) {    }    public void mousePressed(MouseEvent e) {    }    public void mouseReleased(MouseEvent e) {    }    public void mouseEntered(MouseEvent e) {    }    public void mouseExited(MouseEvent e) {        onIndex = -1;        list.repaint();    }    public void mouseDragged(MouseEvent e) {    }    public void mouseMoved(MouseEvent e) {        onIndex = list.locationToIndex(e.getPoint());        list.repaint();    }    /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents    private void initComponents() {        jScrollPane1 = new javax.swing.JScrollPane();        list = new javax.swing.JList();        content = new javax.swing.JPanel();        jScrollPane1.setBorder(javax.swing.BorderFactory.createEtchedBorder());        list.setModel(new javax.swing.AbstractListModel() {            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };            public int getSize() { return strings.length; }            public Object getElementAt(int i) { return strings[i]; }        });        jScrollPane1.setViewportView(list);        content.setBorder(javax.swing.BorderFactory.createEtchedBorder());        content.setLayout(new java.awt.BorderLayout());        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);        this.setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)                .addComponent(content, javax.swing.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE)                .addContainerGap())        );        layout.setVerticalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)                    .addComponent(content, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE))                .addContainerGap())        );    }// </editor-fold>//GEN-END:initComponents    // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JPanel content;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JList list;    // End of variables declaration//GEN-END:variables}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -