Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BackGround в JPanel. 
:(
    Опции темы
ShurikA
Дата 2.12.2006, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Как можо сделать прозрачный фон у JPanel?
И наоборот, можно ли определить картинку для фона JPanel не вставляя какой нибудь JLabel на всю панель?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
powerOn
Дата 2.12.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(ShurikA @  2.12.2006,  18:37 Найти цитируемый пост)
Как можо сделать прозрачный фон у JPanel?


jPanel1.setOpaque(false);

Цитата(ShurikA @  2.12.2006,  18:37 Найти цитируемый пост)
И наоборот, можно ли определить картинку для фона JPanel не вставляя какой нибудь JLabel на всю панель? 


FAQ!


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
ShurikA
Дата 3.12.2006, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Цитата(powerOn @  2.12.2006,  18:14 Найти цитируемый пост)
jPanel1.setOpaque(false);

Вместо того чтобы был виден фон того JPanel на котором сидит jPanel1 выставился серый фон.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
powerOn
Дата 3.12.2006, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(ShurikA @  3.12.2006,  00:17 Найти цитируемый пост)
Вместо того чтобы был виден фон того JPanel на котором сидит jPanel1 выставился серый фон. 

Код в студию!


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
ShurikA
Дата 3.12.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Код

package apis.FileBrowser;

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 java.awt.Rectangle;
import java.awt.Color;
import javax.swing.JScrollBar;
import javax.swing.JTextField;

/**
 * <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 {
    private File currDir;
    private JList fileList;
    private ThumbnailListModel listModel = null;
    private long fileSizeLimit;
    private FlowLayout layout = new FlowLayout(FlowLayout.CENTER,0,0);

    public DirViewer(String dir) {
        this.setLayout(layout);        
        setSize(new Dimension(150,220));
        this.setOpaque(false);
        
        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.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.setOpaque(false);

        this.add(listScroller);
    }

    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();
    }
}



Код

package apis.FileBrowser;

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.text.*;
import java.util.*;

import javax.imageio.*;
import javax.imageio.stream.*;
import javax.swing.*;

import apis.FileBrowser.FileFilters.ImageFilter;

/**
 * <p>Title: Apis </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ThumbnailListModel extends AbstractListModel {
  public static final double MAX_WIDTH = 80.0;
  public static final double MAX_HEIGHT = 80.0;
  private Thread thread;
  private Runnable thumbnailGenerator;

  private static DecimalFormat decimalFormat = new DecimalFormat(
      "###,##0.00' Mb'");
  private ArrayList<FileThumbnail> thumbnails;
  private Image defaultImage;

  private Image psd = new ImageIcon(getClass().getResource(
      "Images/PHOTOSHOP.jpg")).getImage();

  private Image tif = new ImageIcon(getClass().getResource("Images/TIFF.jpg")).
                      getImage();

  private Image pics = new ImageIcon(getClass().getResource("Images/PICS.jpg")).
                       getImage();

  public ThumbnailListModel(File direcory) throws IOException {
    thumbnails = new ArrayList<FileThumbnail>();
    //setDirectory(direcory);
  }

  public void setDirectory(File directory) throws IOException {
    removeAllElements();

    if (!directory.exists()) {
      return;
    }

    File[] list = directory.listFiles();
    if (list == null) {
      return;
    }

    for (File f : directory.listFiles()) {
      if (generalAccept(f)) {
        /*if (f.isDirectory()) {
          thumbnails.add(new FileThumbnail(f, folder));
                 } else */
        if (f.isFile()) {
          String exten = this.getExtension(f);
          if (exten != null) {
            /*if (exten.equals("pdf")) {
              thumbnails.add(new FileThumbnail(f, pdf));
                         } else if (exten.equals("psd")) {
              thumbnails.add(new FileThumbnail(f, psd));
             } else if (exten.equals("tif") || exten.equals("tiff")) {
              thumbnails.add(new FileThumbnail(f, tif));
                         } else */
            if (exten.equals("gif") || exten.equals("jpeg") ||
                exten.equals("jpg") || exten.equals("png") ||
                exten.equals("bmp")) {
              thumbnails.add(new FileThumbnail(f, pics));
            }
          }
        }
      }
    }

    fireIntervalAdded(this, 0, thumbnails.size());

    runThumbnailGenration();
  }

  private void runThumbnailGenration() {
    thumbnailGenerator = new Runnable() {
      public void run() {
        int len = thumbnails.size();
        for (int i = 0; i < len; i++) {
          try {
            FileThumbnail thumbnail = thumbnails.get(i);
            if (accept(thumbnail.getFile())) {
              long start = System.currentTimeMillis();
              BufferedImage largeImage = LoadImageOld(thumbnail.getFile());
              //BufferedImage largeImage = LoadImageNew(thumbnail.getFile());
              long period = System.currentTimeMillis() - start;
              double ratio = Math.min(MAX_WIDTH / largeImage.getWidth(),
                                      MAX_HEIGHT / largeImage.getHeight());
              //BufferedImage thumbnailImage = scaleOldWay(largeImage,ratio);
              BufferedImage thumbnailImage = scaleNewWay(largeImage, ratio);

              thumbnail.setIcon(thumbnailImage);

              fireContentsChanged(ThumbnailListModel.this, i, i);

              //Thread.sleep(50);
            }
          } catch (Exception e) {
            e.printStackTrace();
          } catch (Error err) {
            err.printStackTrace();
          }
        }
      }
    };

    thread = new Thread(thumbnailGenerator, "ThumbnailGenerator");
    thread.setPriority(Thread.MIN_PRIORITY);
    thread.setDaemon(true);
    thread.start();
  }

  private boolean generalAccept(File f) {
    long fileSizeLimit = 0;
    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;
  }

  private static BufferedImage LoadImageOld(File f) {
    BufferedImage bi = null;
    try {
      bi = ImageIO.read(f);
    } catch (Exception e) {
      e.printStackTrace();
    } catch (Error err) {
      err.printStackTrace();
    }

    return bi;
  }

  private static BufferedImage LoadImageNew(File f) {
    BufferedImage bi = null;

    return bi;
  }

  private static BufferedImage scaleOldWay(BufferedImage src, double ratio) {
    AffineTransformOp affineTransformOp = new AffineTransformOp(AffineTransform.
        getScaleInstance(ratio, ratio), AffineTransformOp.TYPE_BICUBIC);

    BufferedImage thumbnailImage = affineTransformOp.createCompatibleDestImage(
        src, null);
    affineTransformOp.filter(src, thumbnailImage);

    return thumbnailImage;
  }

  private static BufferedImage scaleNewWay(BufferedImage src, double ratio) {
    BufferedImage bi = new BufferedImage((int) (src.getWidth() * ratio),
                                         (int) (src.getHeight() * ratio),
                                         BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = bi.createGraphics();

    AffineTransform at = AffineTransform.getScaleInstance(ratio, ratio);
    g2d.drawRenderedImage(src, at);
    g2d.dispose();
    return bi;
  }

  public int getSize() {
    return thumbnails.size();
  }

  public Object getElementAt(int index) {
    return thumbnails.get(index);
  }

  public void removeAllElements() {
    if(thumbnailGenerator!=null)
      thumbnailGenerator=null;
    int index = getSize();
    thumbnails.clear();
    fireIntervalRemoved(this, 0, index);
  }

  //Get the extension of a file.
  private String getExtension(File f) {
    String ext = null;
    String s = f.getName();
    int i = s.lastIndexOf('.');

    if (i > 0 && i < s.length() - 1) {
      ext = s.substring(i + 1).toLowerCase();
    }
    return ext;
  }

  private boolean accept(File f) {
    String extension = getExtension(f);

    if (extension != null) {
      if (extension.equals("gif") || extension.equals("jpeg") ||
          extension.equals("jpg") || extension.equals("png") ||
          extension.equals("bmp")) {
        if (f.length() < 8000000) {
          return true;
        }
      }
    }
    return false;
  }


  public static class FileThumbnail {
    private Image icon;
    private File file;

    public FileThumbnail(File file, Image icon) {
      this.file = file;
      this.icon = icon;
    }

    public Image getIcon() {
      return icon;
    }

    public void setIcon(Image icon) {
      this.icon = icon;
    }

    public File getFile() {
      return file;
    }

    public void setFile(File file) {
      this.file = file;
    }
  }
}




--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
powerOn
Дата 3.12.2006, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



твой код у меня не получилось скомпилировать... поэтому я приведу свой smile

Фрейм с BorderLayout-ом, в центр которого добавлена JPanel с кромкой оранжевого цвета. Фон данной панели - бледно-синий. Менеджер расположения используемый на панели - BorderLayout. 
На панель с синим фоном добавляется прозрачная панель содержащая кнопку. Кромка этой панели - красная.
Код

public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
    }
                       
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setLayout(new java.awt.BorderLayout());

        jPanel1.setBackground(new java.awt.Color(153, 153, 255));
        jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 102, 0)));
        jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 0, 0)));
        jPanel2.setOpaque(false);
        jButton1.setText("jButton1");
        jPanel2.add(jButton1);

        jPanel1.add(jPanel2, java.awt.BorderLayout.LINE_START);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }                       
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
                  
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;

}



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.