[Resolvido] Opacidade JButton

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?

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.

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

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

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

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

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

Editei minha respota, ta ali também

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

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

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

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

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

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));
            }
        });
    }
}
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);
    }
  }
}
1 curtida

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.