Bilbioteca towel

10 respostas
R

Olá, o povo aqui já deve tá de saco cheio de gente perguntando como colocar imagem de fundo em um JPanel, e em todos os tópicos deste sempre recomendaram a biblioteca towel, baixei um .jar 1.2.2 no github mas não sei como usá-lo, como faço pra importar - visto que não existe uma “pasta de libs java” - o arquivo para que assim fique disponível pra qualquer projeto?
e como usá-la?

Sou leigo nisso, agradeço quem ajudar!

10 Respostas

R
Boa tarde amigo primeiramente vc gera o .JAR da biblioteca e importa no seu projeto ou se desejar importa o projeto assim ele gera o .JAR automaticamente, após isso é só fazer o bom uso da lib. um exemplo simples.
AnnotationResolver resolver = new AnnotationResolver(Pessoa.class);
    final ObjectTableModel<Pessoa> tableModel = new ObjectTableModel<Pessoa>(resolver, "nome:Nome,cpf:Cpf,estado:Estado");

    public void carrega_table() {
        tableModel.setData(getDados());
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.setAutoResizeMode(table.AUTO_RESIZE_OFF);
        TableCellRenderer renderer = new MyCellRenderer();
        table.setDefaultRenderer(Integer.class, renderer);
        table.setDefaultRenderer(Double.class, renderer);
        table.setDefaultRenderer(Object.class, renderer);
        table.setDefaultRenderer(Date.class, renderer);
        // table.setDefaultRenderer(Boolean.class, renderer);
        table.setModel(tableModel);
        table.getColumnModel().getColumn(0).setPreferredWidth(100);
        table.getColumnModel().getColumn(1).setPreferredWidth(250);
        table.getColumnModel().getColumn(2).setPreferredWidth(100);
    }

    // Just for create a default List to show.
    private List<Pessoa> getDados() {
        List<Pessoa> list = new ArrayList<Pessoa>();
        try {
            for(int i=0; i<=10; i++){
                Pessoa pp = new Pessoa();
                pp.setNome("Pessoa"+i);
                pp.setCpf("Cpf"+i);
                if(i/2!=0){
                    pp.setEstado(true);
                }
                list.add(pp);
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return list;
    }

junto ao projeto Towel tem muitos outros exemplos só da uma estuda nele blz.

R

já baixei o .jar do towel e já importei pro meu projeto.
Eu tenho uma JFrame principal que quando compilo o java ele carrega, e é justamente esse JFrame que eu quero inserir a imagem, mas quero saber em que parte da minha função eu uso a função do towel?
Inclusive eu tinha colocado ela mas toda vez que mandava executar aparecia dois JFrame, o meu normal e o do towel carregando as imagens, então deixei comentando a parte em que uso a JImagePanel, como resolve isso?

Minha função principal do JFRame
package Gui;

import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

import com.towel.swing.img.JImagePanel;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author Ruan-Alex
 */
public class Main_Interface extends javax.swing.JFrame {

    /**
     * Creates new form Main_Interface
     */
    
    public Main_Interface() {
        initComponents();
        /*try
        {
            JImagePanel panel = new JImagePanel(10, new BufferedImage[] {
                loadImage("C:\\\\Users\\\\Ruan-Alex\\\\Downloads\\\\content_gatinho.jpg"),
                loadImage("C:\\\\Users\\\\Ruan-Alex\\\\Downloads\\\\pirata.jpg"),
                loadImage("C:\\\\Users\\\\Ruan-Alex\\\\Downloads\\\\india.jpg")});
            JFrame frame = new JFrame();
            frame.setPreferredSize(new Dimension(718, 545));
            frame.add(panel);
            frame.setJMenuBar(jMenuBar1);//.add(jMenuBar1);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        catch(IOException e)
        {
            JOptionPane.showMessageDialog(null, "Erro ao gerar tela inicial: " + e);
        }*/
        setLocationRelativeTo(null);
    }
    
    private static BufferedImage loadImage(String file) throws IOException {
        return ImageIO.read(new File(file));
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        Arquivo = new javax.swing.JMenu();
        Agenda_Cad = new javax.swing.JMenuItem();
        Cadastro = new javax.swing.JMenu();
        Clien_Cad = new javax.swing.JMenuItem();
        Func_Cad = new javax.swing.JMenuItem();
        Serv_Cad = new javax.swing.JMenuItem();
        Consultas = new javax.swing.JMenu();
        Agen_Consu = new javax.swing.JMenuItem();
        Clien_Consu = new javax.swing.JMenuItem();
        Func_Consu = new javax.swing.JMenuItem();
        Sair = new javax.swing.JMenuItem();
        Editar = new javax.swing.JMenu();
        Excluir = new javax.swing.JMenu();
        Clien_Exc = new javax.swing.JMenuItem();
        Func_Exc = new javax.swing.JMenuItem();
        Ajuda = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Salão de Beleza - Que Charme!");
        setResizable(false);
        getContentPane().setLayout(null);

        Arquivo.setText("Arquivo");

        Agenda_Cad.setText("Agendar Serviço");
        Agenda_Cad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Agenda_CadActionPerformed(evt);
            }
        });
        Arquivo.add(Agenda_Cad);

        Cadastro.setText("Cadastro");

        Clien_Cad.setText("Cliente");
        Clien_Cad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Clien_CadActionPerformed(evt);
            }
        });
        Cadastro.add(Clien_Cad);

        Func_Cad.setText("Funcionário");
        Func_Cad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Func_CadActionPerformed(evt);
            }
        });
        Cadastro.add(Func_Cad);

        Serv_Cad.setText("Serviços");
        Serv_Cad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Serv_CadActionPerformed(evt);
            }
        });
        Cadastro.add(Serv_Cad);

        Arquivo.add(Cadastro);

        Consultas.setText("Consultas");

        Agen_Consu.setText("Agenda");
        Agen_Consu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Agen_ConsuActionPerformed(evt);
            }
        });
        Consultas.add(Agen_Consu);

        Clien_Consu.setText("Cliente");
        Clien_Consu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Clien_ConsuActionPerformed(evt);
            }
        });
        Consultas.add(Clien_Consu);

        Func_Consu.setText("Funcionário");
        Func_Consu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Func_ConsuActionPerformed(evt);
            }
        });
        Consultas.add(Func_Consu);

        Arquivo.add(Consultas);

        Sair.setText("Sair");
        Sair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SairActionPerformed(evt);
            }
        });
        Arquivo.add(Sair);

        jMenuBar1.add(Arquivo);

        Editar.setText("Editar");

        Excluir.setText("Excluir");

        Clien_Exc.setText("Cliente");
        Excluir.add(Clien_Exc);

        Func_Exc.setText("Funcionário");
        Excluir.add(Func_Exc);

        Editar.add(Excluir);

        jMenuBar1.add(Editar);

        Ajuda.setText("Ajuda");
        jMenuBar1.add(Ajuda);

        setJMenuBar(jMenuBar1);

        setBounds(0, 0, 718, 545);
    }// </editor-fold>                        

    private void Clien_CadActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        Cadastro_Cliente obj = new Cadastro_Cliente();
        obj.setVisible(true);
        this.setVisible(false);
    }                                         

    private void Func_CadActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Cadastro_Funcionario obj = new Cadastro_Funcionario();
        obj.setVisible(true);
        this.setVisible(false);
    }                                        

    private void Serv_CadActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Cadastro_Servicos obj = new Cadastro_Servicos();
        obj.setVisible(true);
        this.setVisible(false);
    }                                        

    private void SairActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        System.exit(0);
    }                                    

    private void Agenda_CadActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        Cadastro_Agenda obj = new Cadastro_Agenda();
        obj.setVisible(true);
        this.setVisible(false);
    }
V

O JImagePanel é equivalente a um JPanel. Então, use-o como se fosse um JPanel, exatamente igual você faria.

Por exemplo, se você quer que ele fique no fundo de todos os seus componentes, adicione ele ao JFrame e os componentes nele.

O outro JFrame que está aparecendo não é o do Towel, é o JFrame que você declarou e criou nas linhas 31 até 38 do código que você postou. Ao invés de criar esse frame a mais, use o JImagePanel no seu próprio JFrame.

R

ViniGodoy:
O JImagePanel é equivalente a um JPanel. Então, use-o como se fosse um JPanel, exatamente igual você faria.

Por exemplo, se você quer que ele fique no fundo de todos os seus componentes, adicione ele ao JFrame e os componentes nele.

O outro JFrame que está aparecendo não é o do Towel, é o JFrame que você declarou e criou nas linhas 31 até 38 do código que você postou. Ao invés de criar esse frame a mais, use o JImagePanel no seu próprio JFrame.

O problema é que não to entendendo como fazer isso em código.
Eu apago as linhas de código do 31 a 38, é isso?

EDIT:
Comentei as linhas de 31 a 38, o outro JFrame não aparece mais, mas e agora como faço pra usar o JImagePanel que já declarei ser usado pelo JFrame atual?

R
Eu tenho o método o qual faço essa manipulação ai chamo o mesmo no construtor do meu JFrame
//Metodo que redefine uma imagem no panel
    private void setar_imagem_de_fundo() {
        imagePanel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
        // Seta a cor de fundo para azul marinho
        // imagePanel.setBackground(new Color(176, 196, 222));

        try {
            // busca o plano de fundo
            BufferedImage img = ImageIO.read(View_Menu_Principal.class
                    .getResource("/br/com/jimagepanel/img/imagem_fundo.png"));
            // seta o plano de fundo no sistama
            imagePanel.setImage(img);
            // Centraliza a imagem
            imagePanel.setStyle(JXImagePanel.Style.CENTERED);
            // Redimenciona a imagem para o tamanho da tela
            //imagePanel.setStyle(JXImagePanel.Style.SCALED);
            // Redimenciona a imagem para o tamanho da tela 2
            //imagePanel.setStyle(JXImagePanel.Style.TILED);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Lembrando esse método faz uso do SwingX com o componente JXImagePanel

R

@Resplandes
Cara sei que vc tá tentando ajudar, mas vc tá me confundindo ainda mais, nunca vi esse JXImagePanel!

V

Você faria isso no initComponents. Esse código é automaticamente gerado pelo Netbeans?

R

Sim, é gerado automaticamente pelo netbeans e não posso alterá-lo, já que toda essa minha classe é um Form Jframe.
E agora como faço? =/

V

Não conheço o construtor visual do Netbeans, pois uso outras IDEs.

R

Dei umas pesquisadas e resolvi usar o eclipse com o WindowsBuilder, realmente o código fica mais limpo e consegui usar o Towel com no meu JFrame, infelizmente já está em cima da hora pra eu refazer tudo.
Enfim, vlw pela ajuda, tópico encerrado.

Criado 23 de novembro de 2013
Ultima resposta 25 de nov. de 2013
Respostas 10
Participantes 3