📄 cachetablescrollpane.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 + -