Столкнулся я с проблеммой поставить картинку в качестве JScrollPane. Есть способ поставить картинку на фон JPanel, Но он не сработал. Мне не удаётся разобраться почему. Вот Код: | Код | package apis.FileBrowser;
import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JList; import java.awt.FlowLayout; import java.io.IOException; import javax.swing.JScrollPane; import javax.swing.JPanel; import java.io.File; import java.awt.Dimension; import apis.FileBrowser.FileFilters.ImageFilter; import javax.swing.ListSelectionModel; import java.awt.dnd.*; import apis.FileBrowser.ThumbnailListModel.FileThumbnail;
/** * <p>Title: Apis </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */ public class DirViewer extends JPanel implements DragSourceListener, DragGestureListener { private File currDir; private JList fileList; private ThumbnailListModel listModel = null; private long fileSizeLimit; private FlowLayout layout = new FlowLayout(FlowLayout.CENTER,0,0); //variables for drag&drop private DragSource dragSource; private Image bgImage = null;
public DirViewer(String dir) { this.setLayout(layout); setSize(new Dimension(150,220)); bgImage = new ImageIcon(getClass().getResource("Images/Background Pictures.png")).getImage();
if(dir == null) { currDir = new File(System.getProperty( "user.home" )); } else { currDir = new File(dir); }
fileSizeLimit = 0;
try { listModel = new ThumbnailListModel(currDir); //System.getProperty( "user.home" ) } catch (IOException ioe) {}
//List Setup fileList = new JList(listModel); fileList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fileList.setOpaque(false); fileList.setLayoutOrientation(JList.HORIZONTAL_WRAP); fileList.setFixedCellHeight(110); fileList.setFixedCellWidth(130); fileList.setVisibleRowCount( -1); fileList.setCellRenderer(new FileThumbCellRenderer(fileSizeLimit));
JScrollPane listScroller = new JScrollPane(fileList); listScroller.setPreferredSize(new Dimension(this.getWidth()-1,this.getHeight()-2)); listScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); listScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); listScroller.getVerticalScrollBar().setPreferredSize(new Dimension(10,listScroller.getHeight())); listScroller.getViewport().setOpaque(false);
this.add(listScroller);
dragSource = DragSource.getDefaultDragSource(); dragSource.createDefaultDragGestureRecognizer(fileList, DnDConstants.ACTION_COPY, this); } public void paint(Graphics g) { if (bgImage != null) { g.drawImage(bgImage, 0, 0, null); } super.paintChildren(g); super.paintBorder(g); }
public void ChangeDir(File dir) { currDir = null; currDir = dir; try { listModel.setDirectory(dir); } catch (IOException ioe) {} }
public JList getList() { return fileList; }
private void ClearAll() { listModel.removeAllElements(); }
private boolean accept(File f) { ImageFilter IFilter = new ImageFilter(fileSizeLimit); if (IFilter.accept(f)) { return true; } /* TiffFileFilter TFilter = new TiffFileFilter(fileSizeLimit); if(TFilter.accept(f)) return true;
PSFileFilter PSFilter = new PSFileFilter(fileSizeLimit); if(PSFilter.accept(f)) return true;
PDFFileFilter PDFFilter = new PDFFileFilter(fileSizeLimit); if(PDFFilter.accept(f)) return true;*/
return false; }
public String getCurrDir() { return currDir.getAbsolutePath(); }
public int getLength() { return listModel.getSize(); }
public void dragGestureRecognized(DragGestureEvent dge) { //create a transfarable object //and start the drag FileThumbnail dragObj = (FileThumbnail) fileList.getSelectedValue(); ImgNameStringTrans imgStr = new ImgNameStringTrans(dragObj.getFile().getAbsolutePath()); dge.startDrag(DragSource.DefaultCopyNoDrop,imgStr,this);
}
public void dragEnter(DragSourceDragEvent dsde) { DragSourceContext context = dsde.getDragSourceContext(); int action = dsde.getDropAction(); if((action & DnDConstants.ACTION_COPY) != 0) context.setCursor(DragSource.DefaultCopyDrop); else context.setCursor(DragSource.DefaultCopyNoDrop);
}
public void dragOver(DragSourceDragEvent dsde) { }
public void dropActionChanged(DragSourceDragEvent dsde) { }
public void dragExit(DragSourceEvent dse) { }
public void dragDropEnd(DragSourceDropEvent dsde) { if(dsde.getDropSuccess() == false) return; else ; } }
|
фон как был так и остался дефолтовый. Как с этим побороться?
--------------------
Если долго мучиться, что нибудь получится... 
|