Ir ao conteúdo

Java JPanel Movível Como uma Janela


Ir à solução Resolvido por AdrianoSiqueira,

Posts recomendados

Postado

Eu estou fazendo uma especie de emulador. porém meio que eu não estou conseguindo fazer que as Aplicações. (vou usar como exemplo a Calculadora) quando o usuário pressionar o jpanel ele consiga move-lo para outros locais, como no windows: ão pressionar o topo dos programas é possível mover-los.

		Panel calcview = new Panel();
		calcview.setBackground(Color.WHITE);
		calcview.setBounds(474, 78, 154, 219);
		contentPane.add(calcview);
		calcview.setVisible(false);
		calcview.setLayout(null);
		
		Button button_2 = new Button("Fechar");
		button_2.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				calcview.setVisible(false);
			}
		});
		button_2.setBounds(84, 0, 70, 22);
		calcview.add(button_2);

 

  • Solução
Postado

Segue um exemplo funcional feito com Swing:

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

public class Janela extends JFrame {
    private Point initialClick;

    public Janela() {
        configurar();
    }

    public static void main(String[] args) {
        new Janela();
    }

    private void configurar() {
        this.addMouseListener(new MouseAdapter() {
            @Override  
            public void mousePressed(MouseEvent e) {
                initialClick = e.getPoint();
                getComponentAt(initialClick);
            }
        });

        this.addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                int thisX = getLocation().x;
                int thisY = getLocation().y;

                int xMoved = e.getX() - initialClick.x;
                int yMoved = e.getY() - initialClick.y;

                int X = thisX + xMoved;
                int Y = thisY + yMoved;
                setLocation(X, Y);
            }
        });

        this.setTitle("Janela de Teste");
        this.getContentPane().add(new JLabel("Conteúdo da sua janela"));
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...