📄 listview.java
字号:
float value = (float)Hscrollbar.getValue();
float max = (float)Hscrollbar.getMaximum();
increseunit = (int)((value/max)*((float)ListItemsCount)) - start;
start = (int)((value/max)*((float)ListItemsCount));
}
repaint();
}else if(obj.equals(Vscrollbar)){
int ColumnHeadersCount = columnheaders.getStoreColumnHeaders().size();
int columnheadersWidth = 0;
for(int i = 0;i<ColumnHeadersCount;i++){
ColumnHeader columnheader = (ColumnHeader)(columnheaders.getStoreColumnHeaders().elementAt(i));
columnheadersWidth = columnheadersWidth + columnheader.getWidth();
}
int visible = Vscrollbar.getVisibleAmount();
int min = Vscrollbar.getMinimum();
float value = (float)Vscrollbar.getValue();
float max = (float)Vscrollbar.getMaximum();
if(view == 0 && arrange == 0){
startValue = (int)(value+minXView0);
}else if(view == 1 && arrange == 0){
startValue = (int)(value+minXView1);
}else{
startValue = (int)(value);
}
repaint();
}
}
private void drawrect(String s,boolean pressState,int left,int top,int right,int bottom,Graphics g)
{
FontMetrics fm = getFontMetrics(getFont());
if(fm == null) return;
int fontheight = fm.getHeight();
g.setColor(Color.lightGray);
g.fillRect(left+1,top+1,right-left-1,bottom-top-1);
if (! pressState)
{
g.setColor(Color.lightGray);
g.drawLine(left,top,right,top);
g.drawLine(left,top,left,bottom);
g.setColor(Color.white);
g.drawLine(left+1,top+1,right-1,top+1);
g.drawLine(left+1,top+1,left+1,bottom-1);
g.setColor(Color.black);
g.drawLine(left,bottom,right,bottom);
g.drawLine(right,bottom,right,top);
g.drawString(s,left+fontheight/4,top+bottom-fontheight/2);
g.setColor(Color.gray);
g.drawLine(left+1,bottom-1,right-1,bottom-1);
g.drawLine(right-1,bottom-1,right-1,top+1);
}
else
{
g.setColor(Color.gray);
g.drawRect(left,top,right-left,bottom-top);
g.setColor(Color.black);
g.drawString(s,left+fontheight/4,top+bottom-fontheight/2);
}
}
public Image getIconsImage(ListItem listitem){
boolean isdir = listitem.getIsDir();
if(isdir){
return CoverImage1;
}
else {
return CoverImage2;
}
}
public Image getSmallImage(ListItem listitem){
boolean isdir = listitem.getIsDir();
if(isdir){
return CoverImage1;
}
else {
return CoverImage2;
}
}
private int getlistStrWidth(int imagewidth){
FontMetrics fm = getFontMetrics(getFont());
int ListItemsCount = listitems.getStoreListItems().size();
int listStrWidth = 0;
for(int i = 0;i < ListItemsCount; i++){
ListItem listitem = (ListItem)(listitems.getStoreListItems().elementAt(i));
String listitemString = listitem.getText();
if(fm.stringWidth(listitemString)+imagewidth+20 > listStrWidth){
listStrWidth = fm.stringWidth(listitemString) + imagewidth + 20;
}
}
return listStrWidth;
}
private boolean reDraw = true;
private boolean HscrollIsVisible(int fontheight){
Rectangle r = getBounds();
int Width = r.width;
int Height = r.height;
int ListItemsCount = listitems.getStoreListItems().size();
if(ListItemsCount*(fontheight+1) > Height + fontheight)//18
{
return true;
}
return false;
}
private boolean VscrollIsVisible(){
Rectangle r = getBounds();
int Width = r.width;
int Height = r.height;
int ColumnHeadersCount = columnheaders.getStoreColumnHeaders().size();
int columnheadersWidth = 0;
for(int i = 0;i<ColumnHeadersCount;i++){
ColumnHeader columnheader = (ColumnHeader)(columnheaders.getStoreColumnHeaders().elementAt(i));
columnheadersWidth = columnheadersWidth + columnheader.getWidth();
}
if(columnheadersWidth > Width){
return true;
}
return false;
}
public void setCurrentListIndex(){
CurrentListIndex = -1;
listitemclick = null;
}
private int getLongestString(){
FontMetrics fm = getFontMetrics(getFont());
int ListItemsCount = listitems.getStoreListItems().size();
int listStrWidth = 0;
for(int i = 0;i < ListItemsCount; i++){
ListItem listitem = (ListItem)(listitems.getStoreListItems().elementAt(i));
String listitemString = listitem.getText();
if(fm.stringWidth(listitemString) > listStrWidth){
listStrWidth = fm.stringWidth(listitemString);
}
}
return listStrWidth;
}
public void drawLineOfRect(Graphics g,int startx,int starty,int endx,int endy) {
int x = Math.min(startx,endx);
int y = Math.min(starty,endy);
int w = Math.abs(endx-startx);
int h = Math.abs(endy-starty);
g.setColor(Color.darkGray);
for (int i=x; i<(x+w-1);i=i+5) {
g.drawLine(i,y,i+3,y);
g.drawLine(i,y+h,i+3,y+h);
i=i+5;
}
for (int i=y; i<(y+h-1);i=i+5) {
g.drawLine(x,i,x,i+3);
g.drawLine(x+w,i,x+w,i+3);
i=i+5;
}
}//end drawLineOfRect.
public Color getForeColor(){
return super.getForeground();
}
public boolean getGridLines(){
return gridlines;
}
public Color getBackColor()
{
return super.getBackground();
}
public void mouseDragged(MouseEvent e){
int addwidth = e.getX() - mousex;
int columnwidth = 0;
if(ChangeColumnWidth != null)
{
columnwidth = ChangeColumnWidth.getWidth();
}
if(canResize)
{
if(addwidth<0 && columnwidth > 0)
{
ChangeColumnWidth.setWidth(columnwidth + addwidth);
repaint();
}else if(addwidth>0){
ChangeColumnWidth.setWidth(columnwidth + addwidth);
repaint();
}
}
mousex = e.getX();
mousey = e.getY();
}
public void mouseMoved(MouseEvent e){
FontMetrics fm = getFontMetrics(getFont());
if(fm == null) return;
int fontheight = fm.getHeight();
mousey = e.getY();
mousex = e.getX();
int columnheaderLeft = 0 - startValue;
if(mousey > 0 && mousey < 2*fontheight)
{
for(int i = 0;i<columnheaders.getStoreColumnHeaders().size();i++){
ColumnHeader columnheader = (ColumnHeader)(columnheaders.getStoreColumnHeaders().elementAt(i));
columnheaderLeft = columnheaderLeft + columnheader.getWidth();
if(mousex > columnheaderLeft-5 && mousex < columnheaderLeft+5){
setCursor(eResizeCursor);
if(i<columnheaders.getStoreColumnHeaders().size() - 1 ){
ColumnHeader nextcolumnheader = (ColumnHeader)(columnheaders.getStoreColumnHeaders().elementAt(i+1));
if(nextcolumnheader.getWidth() < 5){
if(mousex > columnheaderLeft){
ChangeColumnWidth = nextcolumnheader;
}else{
ChangeColumnWidth = columnheader;
}
}else{
ChangeColumnWidth = columnheader;
}
}else{
ChangeColumnWidth = columnheader;
}
canResize = true;
break;
}else{
setCursor(defaultCursor);
canResize = false;
}
}
}
else
{
setCursor(defaultCursor);
canResize = false;
}
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
public Dimension getMinimumSize() {
return (new Dimension(200,200));
}
public void focusGained(FocusEvent e){}
public void focusLost(FocusEvent e){}
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code == KeyEvent.VK_DELETE){
if(listitemclick != null){
String st = listitemclick.getText();
String msg = "Do you want to remove '" + st +"'?";
int state = MsgBox.MessageBox(new java.awt.Frame(), "Instant Basic", msg, MsgBox.OK + MsgBox.CANCEL, 1);
// int state = 0;
if(state == MsgBox.CANCEL) {
return;
}
try{
listitems.Remove(listitemclick.getIndex());
repaint();
}catch(Exception ex){
ex.printStackTrace();
return;
}
filedialog.deleteFile(st);
listitemclick = null;
CurrentListIndex = -1;
}
}else if(code == KeyEvent.VK_ENTER){
if(listitemclick == null) return;
String name = listitemclick.getText();
boolean isdir = listitemclick.getIsDir();
filedialog.clickListItems(name,isdir);
}else if (code == KeyEvent.VK_UP){
CurrentListIndex -= 1;
if(CurrentListIndex == -1) CurrentListIndex = 0;
keys();
}else if (code == KeyEvent.VK_DOWN){
int ListItemsCount = listitems.getStoreListItems().size();
CurrentListIndex += 1;
if(CurrentListIndex == ListItemsCount) CurrentListIndex = ListItemsCount - 1;
keys();
}else if (code == KeyEvent.VK_LEFT){
int ListItemsCount = listitems.getStoreListItems().size();
CurrentListIndex -= 15;
if (CurrentListIndex < 0) {
CurrentListIndex += 15;
keys();
} //huangbin.
keys();
}else if (code == KeyEvent.VK_RIGHT){
int ListItemsCount = listitems.getStoreListItems().size();
CurrentListIndex += 15;
if (CurrentListIndex > ListItemsCount-1){
CurrentListIndex -= 15;
keys();
}//return;
keys();
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
public void keys(){
int ListItemsCount = listitems.getStoreListItems().size();
int m = 0;
while ((m < ListItemsCount))
{
ListItem listitem = (ListItem)(listitems.getStoreListItems().elementAt(m));
listitem.setSelected(false);
m++;
}
if(listitems.getStoreListItems().size() > 0)
{
ListItem listitemclick = (ListItem)(listitems.getStoreListItems().elementAt(CurrentListIndex));
listitemclick.setSelected(true);
boolean isdir = listitemclick.getIsDir();
String itemSt = listitemclick.getText();
if (!isdir){
filedialog.setText(itemSt);
}
}
repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -