Jump to content

JPanel sobrepõem-se sobre outra JPanel


pedrix21
 Share

Recommended Posts

Boas,

O meu problema é o seguinte,

Tenho uma JFrame e adicionei uma JPanel(1).(Swing)

Através de código criei uma subclasse de JPanel(2) e adicionei uns componentes(JTexts, JLabels) nessa criada.

No código da JFrame adicionei essa JPanel(2) em JPanel(1).

Quis fazer isto para ficar:

____________________________________

|                                                                      |

|  _______________________________    |

|  |_______________________________|    |

|  _______________________________    |

|  |_______________________________|  |

|___________________________________|

A de fora é a JPanel(1)

e as de dentro (pode ser 100) são as JPanel(2).

O meu problema é que quando clico com o botão esquerdo num JPanel(2) para fazer algo ele não assume nada.

Mas assume para a JPanel(1)

@Pedro Lopes

Link to comment
Share on other sites

Estou a usar o GridLayout no JPanel(1).

E estou a colocar dentro desse JPanel vários JPanels(2).

Eu quero quando clicar no Jpanel(2) que faça algo! Tenho este código:

public void statusHomePanelMousePressed(java.awt.event.MouseEvent evt) {
        if (evt.getButton() == evt.BUTTON1) {
            System.out.println("botaoEsquerdo");
        } else {
            System.out.println("outro botao");
        }

    }

Quando corro o programa e clico em cima dos JPanel não dá a acção do JPanel(2) mas sim a do JPanel(1).

Não sei se me fiz entender...

@Pedro Lopes

Link to comment
Share on other sites

public class StatusHomePanel extends JPanel {

    private URI image;
    private String name;

public StatusHomePanel(URI image, String name) {
        this.setImage(image);
        this.setName(name);
makeStructure();
}
public void makeStructure() {
        
            Icon icon = new ImageIcon(image.toURL());
            JLabel lblImagem = new JLabel(icon);
            this.add(lblImagem);
            this.add(lblName);
}
public void statusHomePanelMousePressed(java.awt.event.MouseEvent evt) {
        if (evt.getButton() == evt.BUTTON1) {
            System.out.println("pressioneou");
        } else {
            System.out.println("outro botao");
        }
    }

Este código é o do JPanel(2).

O JPanel(1) tem um GridLayout, adicionei através da interface gráfica e depois tenho este código no JFrame que contém esse JPanel(1):

for(....){
StatusHomePanel sth = new StatusHomePanel(state.user.getProfileImageUrl(), state.user.getName());
jpHome.add(sth);
}

Obrigado pelas respostas

@Pedro Lopes

Link to comment
Share on other sites

Já consegui =)

Obrigado!!!

Coloquei isto no método construtor:

addMouseListener(new MouseAdapter() {

            public void mousePressed(MouseEvent me) {
                System.out.println("kakakaa");
            }
        });

@Pedro Lopes

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.