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

📄 cachetablescrollpane.java

📁 自行开发的高缓存table
💻 JAVA
字号:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov  Date: 2004-2-20 9:17:08
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   CacheTableScrollPane.java

package utility.HWCacheTable;

import java.awt.*;
import java.awt.event.*;
import java.util.ResourceBundle;
import javax.swing.*;
import sbsnms.main.sbsnmsGUI;
import utility.MemoryMgr;

public class CacheTableScrollPane extends JScrollPane
{
    class LineNumTip extends JPopupMenu
    {

        public Dimension getSize()
        {
            return cachedLinePanel.getPreferredSize();
        }

        public void setText(String s)
        {
            cachedLine.setText(sbsnmsGUI.resources.getString("LineNO") + s);
        }

        public void destroy()
        {
            cachedLine = null;
            if(cachedLinePanel != null)
                cachedLinePanel.removeAll();
            cachedLinePanel = null;
        }

        JLabel cachedLine;
        JPanel cachedLinePanel;

        public LineNumTip()
        {
            cachedLine = new JLabel("0");
            cachedLinePanel = new JPanel(new FlowLayout(), true);
            cachedLine.setBackground(new Color(255, 255, 140));
            cachedLinePanel.setBackground(new Color(255, 255, 140));
            setBackground(new Color(255, 255, 140));
            cachedLine.setForeground(Color.black);
            cachedLine.setHorizontalAlignment(4);
            cachedLinePanel.add(cachedLine);
            add(cachedLinePanel);
            setBorder(BorderFactory.createLineBorder(Color.black, 1));
        }
    }


    public CacheTableScrollPane()
    {
        pagedTable = null;
        init = true;
        verticalTableScrollBar = null;
        win = null;
        initialize();
    }

    public CacheTableScrollPane(JTable jtable)
    {
        pagedTable = null;
        init = true;
        verticalTableScrollBar = null;
        win = null;
        pagedTable = jtable;
        initialize();
    }

    public void setTable(JTable jtable)
    {
        pagedTable = jtable;
    }

    public void initialize()
    {
        setVerticalScrollBarPolicy(20);
        setHorizontalScrollBarPolicy(30);
        setDoubleBuffered(true);
        verticalTableScrollBar = getVerticalScrollBar();
        if(verticalTableScrollBar == null)
        {
            verticalTableScrollBar = createVerticalScrollBar();
            setVerticalScrollBar(verticalTableScrollBar);
        }
        verticalTableScrollBar.addMouseListener(new MouseAdapter() {

            public void mousePressed(MouseEvent mouseevent)
            {
                win = createWin();
                showWin(mouseevent);
            }

            public void mouseReleased(MouseEvent mouseevent)
            {
                hideWin();
            }

        });
        verticalTableScrollBar.addMouseMotionListener(new MouseMotionAdapter() {

            public void mouseDragged(MouseEvent mouseevent)
            {
                showWin(mouseevent);
            }

        });
    }

    private void showWin(MouseEvent mouseevent)
    {
        if(verticalTableScrollBar == null || pagedTable == null)
            return;
        int i = rowAtPoint(mouseevent);
        if(i == -1)
        {
            return;
        } else
        {
            win = createWin();
            win.setText(String.valueOf(i));
            win.pack();
            win.setVisible(true);
            Point point = getPoint(mouseevent);
            win.setLocation(point);
            return;
        }
    }

    private void hideWin()
    {
        if(win == null)
        {
            return;
        } else
        {
            win.setVisible(false);
            return;
        }
    }

    private int rowAtPoint(MouseEvent mouseevent)
    {
        if(pagedTable == null)
            return -1;
        int i = pagedTable.rowAtPoint(new Point(pagedTable.getPreferredSize().width, mouseevent.getY() + verticalTableScrollBar.getValue()));
        if(pagedTable.getRowCount() == 0 || i < 0)
        {
            return -1;
        } else
        {
            i = i <= pagedTable.getRowCount() - 1 ? i : pagedTable.getRowCount() - 1;
            i = i >= 0 ? i : 0;
            i++;
            return i;
        }
    }

    private Point getPoint(MouseEvent mouseevent)
    {
        Point point = verticalTableScrollBar.getLocationOnScreen();
        int i = (point.y + verticalTableScrollBar.getSize().height) - win.getPreferredSize().height;
        int j = point.y;
        int k = point.x - win.getPreferredSize().width;
        int l = point.y + mouseevent.getY() <= i ? point.y + mouseevent.getY() >= j ? point.y + mouseevent.getY() : j : i;
        return new Point(k, l);
    }

    private LineNumTip createWin()
    {
        if(win == null)
            return new LineNumTip();
        else
            return win;
    }

    public JScrollBar getVerticalScrollBarEx()
    {
        return verticalTableScrollBar;
    }

    public JTable getTable()
    {
        return pagedTable;
    }

    public void destroy()
    {
        pagedTable = null;
        if(verticalTableScrollBar != null)
        {
            MemoryMgr.clearMouseListener(verticalTableScrollBar);
            MemoryMgr.clearMouseMotionListener(verticalTableScrollBar);
        }
        verticalTableScrollBar = null;
        if(win != null)
            win.destroy();
        win = null;
    }

    JTable pagedTable;
    private boolean init;
    JScrollBar verticalTableScrollBar;
    LineNumTip win;



}

⌨️ 快捷键说明

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