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

📄 cachetablescrollpane.java

📁 自行开发的高缓存table
💻 JAVA
字号:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov  Date: 2004-2-20 9:15:21
// 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.CacheTableEX;

import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import java.util.ResourceBundle;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import sbsnms.main.sbsnmsGUI;

// Referenced classes of package utility.CacheTableEX:
//            CacheTableEx, CacheTableModel

public class CacheTableScrollPane extends JScrollPane
    implements TableModelListener
{
    class LineNumTip extends JPopupMenu
    {

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

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

        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 class VerticalScollBar extends JScrollBar
    {

        public void initialize()
        {
            addAdjustmentListener(new AdjustmentListener() {

                public void adjustmentValueChanged(AdjustmentEvent adjustmentevent)
                {
                    scrollPaneAdjustmentValueChanged(adjustmentevent);
                }

            });
        }

        public void refreshProperties()
        {
            setMaximum(getVerticalScrollBar().getMaximum());
            setMinimum(getVerticalScrollBar().getMinimum());
            setUnitIncrement(pagedTable.getRowHeight());
            setBlockIncrement((int)getViewport().getViewRect().getHeight());
            setVisibleAmount(getVerticalScrollBar().getVisibleAmount());
        }


        public VerticalScollBar()
        {
            initialize();
        }
    }


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

    public CacheTableScrollPane(CacheTableModel cachetablemodel)
    {
        pagedTable = null;
        init = true;
        verticalTableScrollBar = null;
        win = null;
        pagedTable = new CacheTableEx(cachetablemodel);
        initialize();
    }

    public void initialize()
    {
        pagedTable.getModel().addTableModelListener(this);
        pagedTable.setTableScrollPane(this);
        setVerticalScrollBarPolicy(21);
        setHorizontalScrollBarPolicy(30);
        setDoubleBuffered(true);
        pagedTable = pagedTable;
        getViewport().add(pagedTable);
        verticalTableScrollBar = new VerticalScollBar();
        getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {

            public void adjustmentValueChanged(AdjustmentEvent adjustmentevent)
            {
                originalScrollPaneAdjustmentValueChanged(adjustmentevent);
            }

        });
        verticalTableScrollBar.addMouseListener(new MouseAdapter() {

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

            public void mouseReleased(MouseEvent mouseevent)
            {
                if(win != null)
                {
                    hideWin();
                    win = null;
                }
            }

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

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

        });
    }

    private void showWin(MouseEvent mouseevent)
    {
        if(win == null || verticalTableScrollBar == null || pagedTable == null || pagedTable.getRowCount() < 1)
        {
            return;
        } else
        {
            int i = pagedTable.rowAtPoint(new Point(pagedTable.getPreferredSize().width, verticalTableScrollBar.getValue() + mouseevent.getY()));
            i = i <= pagedTable.getRowCount() && i != -1 ? i : pagedTable.getRowCount();
            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);
            win = null;
            return;
        }
    }

    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()
    {
        return new LineNumTip();
    }

    private void originalScrollPaneAdjustmentValueChanged(AdjustmentEvent adjustmentevent)
    {
        verticalTableScrollBar.refreshProperties();
        int i = adjustmentevent.getValue();
        verticalTableScrollBar.setValue(i);
        int j = pagedTable.rowAtPoint(new Point(1, i));
        if(Math.abs(prevousRow - j) > ((CacheTableModel)pagedTable.getModel()).getPageSize() - 2 || init)
        {
            init = false;
            pagedTable.updateData(adjustmentevent.getValue());
            pagedTable.revalidate();
            pagedTable.repaint();
            prevousRow = j;
        }
    }

    public void tableChanged(TableModelEvent tablemodelevent)
    {
        int i = getVerticalScrollBar().getValue();
        AdjustmentEvent adjustmentevent = new AdjustmentEvent(getVerticalScrollBar(), 601, 601, i);
        scrollPaneAdjustmentValueChanged(adjustmentevent);
        pagedTable.revalidate();
        pagedTable.repaint();
        if(tablemodelevent.getColumn() == -1)
            pagedTable.clearSelection();
    }

    public VerticalScollBar getVerticalScrollBarEx()
    {
        return verticalTableScrollBar;
    }

    public void scrollPaneAdjustmentValueChanged(AdjustmentEvent adjustmentevent)
    {
        JScrollBar jscrollbar = (JScrollBar)adjustmentevent.getSource();
        if(!jscrollbar.getValueIsAdjusting())
        {
            pagedTable.updateData(adjustmentevent.getValue());
            getVerticalScrollBar().setValue(adjustmentevent.getValue());
        }
    }

    public void srollToPosition(int i)
    {
        getVerticalScrollBar().setValue(i);
        verticalTableScrollBar.setValue(i);
    }

    public CacheTableEx getCacheTableEx()
    {
        return pagedTable;
    }

    CacheTableEx pagedTable;
    private boolean init;
    VerticalScollBar verticalTableScrollBar;
    LineNumTip win;
    private static int prevousRow = 0;





}

⌨️ 快捷键说明

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