[Resolvido] Opacidade JButton

16 respostas
java
S

Pessoal, eu quero poder fazer com que o JButton seja transparente mas não totalmente, até ai eu consegui porém quando eu passo o cursor por cima, ele tira a transparencia do JButton. Além disso queria saber como posso mudar a cor da borda e poder aumentar a borda.
E aproveitando, como posso colocar uma imagem de fundo no JPanel, ou no JFrame?

16 Respostas

R

Sobre a opacidade do jButton acontece a mesma coisa aqui, acho que não tem muita solução nesse caso…

jButton1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 153, 0), 3));

Aqui é a cor: "(255, 153, 0)"
Aqui é a largura da borda: “, 3”

Primeiro cria um pacote, coloca a sua imagem dentro do seu pacote. Depois: No jPanel vc nao vai conseguir… coloca um jLabel no seu jPanel, redimensiona ele pra o tamanho que você quiser, aí clica com o botão direito, propriedades, icon (é a 6ª opção), clica nos três pontinhos “…”, escolhe o pacote que vc quer e depois seleciona a imagem.

S

Cara tem como me dizer como seria no código? eu não entendi muito bem

R

Opa: seujLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/seuPacote/Imagem.jpg")));

S

ok, vlw, vc saberia como mudar o margin do JButton?

R

A borda? Se for:

jButton1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 204, 204), 3));

Aqui é a cor: "(0, 204, 204)"
Aqui é a grossura da borda: “, 3”

Se for o Margin mesmo:

jButton1.setMargin(new java.awt.Insets(2, 14, 2, 19));

Aí vc muda pra os seus parametros: `

2: Superior
14: Esquerda
2: Inferior
19: Direita

S

não, eu falo do espaço entre a borda e o texto

R

Editei minha respota, ta ali também

S

ok, vlw, vc saber como eu poderia resolver o meu problema? toda vez que eu passo o mouse sobre o JButton, ele perde um pouco da transparencia e começa a ficar cada vez mais opaco

R

Olha, eu tentei aqui e deu a mesma coisa, toda vez que eu passava o mouse ele voltava a cor normal… Indiferente da opacidade, ele sempre voltava, então nessa parte eu não sei como dar um jeito

S

Acredito que talvez eu tenha conseguido, ele não ta perdendo a transparencia mas ta respondendo ainda. vou fazer alguns testes no código ainda, por enquanto eu coloquei pra ele pintar de preto o background quando o Focus for true, mas não ta pintando, só ta transparente direto, então ta meio estranho ainda.

JButton btnSair = new JButton("Sair") {
        @Override
        public void paintComponent(Graphics g) {
            if(btnSair.isFocusOwner()) {
                //Caso o cursor esteja no botão mas não clicou.
            } else {
                //Caso contrario.
            }
        }
    };
D
JButton botao = new JButton("ola mundo") {
        public void paint(Graphics g) {
            if (g != null) {
                Graphics2D g2d = (Graphics2D) g;
                g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.50f)); // 50%
                super.paint(g);
            }
        }
    };
    botao.setOpaque(false);
S

Até agr nada, não funcionou nada :frowning:

D

Então procure sobre “JButton traslucent” ou “JButton translucente”.

S

Até agr eu consegui apenas fazer com que ele ficasse transparente inicialmente e escurecer ele só quando aproximo, mas mantendo um certo nivel de transparencia, mas mesmo assim, eu queria que ele voltasse a transparencia anterior, e não que ficasse totalmente translucido:

Vou colcoar o codigo aqui pra caso alguém consiga ter uma idéia se tiver coisas sem sentido no codigo, é pq isso é só o código teste, então pode ter alguns códigos soltos sem finalidades, mas acredito eu q não tenha:

package ConfigurandoTela;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ConfigTela {
    JFrame janela = new JFrame();
    JPanel painel = new JPanel();
    JButton btnSair = new JButton("Sair");
    JLabel fundo = new JLabel();
    public void main() {
        configBtn();
        configLabel();
        configPanel();
        configFrame();
    }
    public void configFrame() {
        janela.setLayout(null);
        janela.setBounds(0, 0, 1000, 600);
        janela.add(painel);
        janela.setVisible(true);
    }
    public void configPanel() {
        painel.setLayout(null);
        painel.setBounds(0, 0, 500, 500);
        painel.setBackground(Color.blue);
        
        painel.add(btnSair);
        painel.add(fundo);
    }
    public void configLabel() {
        fundo.setBounds(0, 0, 500, 500);
        fundo.setIcon(new javax.swing.ImageIcon(getClass().getResource("fundo.png")));
    }
    public void configBtn() {
        btnSair.setContentAreaFilled(false);
        btnSair.setBorder(javax.swing.BorderFactory.createLineBorder(Color.green, 2));
        btnSair.setMargin(new java.awt.Insets(2, 14, 2, 19));
        btnSair.setForeground(new Color(0.0f,0.5f,0.0f,1.0f));
        btnSair.setBackground(new Color(0.5f,0.5f,0.5f,1.0f));
        
        btnSair.setBounds(0, 0, 200, 50);
        btnSair.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }
        });
        btnSair.addMouseListener(new MouseListener() {

            @Override
            public void mouseClicked(MouseEvent me) {}

            @Override
            public void mousePressed(MouseEvent me) {}

            @Override
            public void mouseReleased(MouseEvent me) {}

            @Override
            public void mouseEntered(MouseEvent me) {
                System.out.println("oiii");
                btnSair.setContentAreaFilled(true);
                btnSair.setBackground(new Color(0.5f,0.5f,0.5f,0.5f));
            }

            @Override
            public void mouseExited(MouseEvent me) {
                btnSair.setContentAreaFilled(false);
                btnSair.setBackground(new Color(0.5f,0.5f,0.5f,0.2f));
            }
        });
    }
}
D
class BotaoTranslucent extends JButton {
  float alpha = .4f;
  public BotaoTranslucent(String text) {
    super(text);
    setOpaque(false);
    setBackground(new Color(0.5f,0.5f,0.5f));
    setBorder(javax.swing.BorderFactory.createLineBorder(Color.green, 2));
    setMargin(new java.awt.Insets(2, 14, 2, 19));
    setForeground(new Color(0.0f,0.5f,0.0f));
    addMouseListener(new MouseAdapter() {
      @Override
      public void mouseEntered(MouseEvent me) {
         alpha = .8f;
         repaint();
      }

      @Override
      public void mouseExited(MouseEvent me) {
         alpha = .4f;
         repaint();
      }
    })
  }
  public void paint(Graphics g) {
    if (g != null) {
      Graphics2D g2d = (Graphics2D) g;
      g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
      g2d.setColor(getBackground());
      g2d.fillRect(0,0,getWidth,getHeight);
      super.paint(g);
    }
  }
}
S

Caraca véi, vlw, vou estudar bem esse seu código pra eu poder entender melhor, mas valeu mesmo cara, era exatamente isso que eu queria.

Criado 24 de junho de 2018
Ultima resposta 27 de jun. de 2018
Respostas 16
Participantes 3