Muitos objetos para uma tela só?

Prezados, boa noite.

A ideia é uma tela que carregue duas janelas menores, cada qual com uma imagem (o antes e o depois)

Cada janela tem um contentPane dentro de um internalFrame.

As janelas estão dentro de desktopPane, que está dentro de um contentPane que, por sua vez, está no JFrame.

Ou seja:

Só para ter certeza…
1. Eu findei criando itens demais para desenhar as telas né?
2. Qual sugestão vocês dariam, para eu simplificar o código (ou seja, quais paineis deveria remover)?
3. Na parte do evento da mudança de propriedade (que está com os comandos comentados //), a ideia é redimensionar os painéis ao redimensionar a janela principal, mas o código não está funcionando (apesar do Eclipse não indicar erro). Vocês teriam alguma sugestão diferente?

Agradeço desde já a todos pela atenção e tempo em me responder. Obrigado.

Código

package tcc;

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
import java.awt.Cursor;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class TelaLogo extends JFrame {

private static final long serialVersionUID = -1202968042705498217L;
private JPanel contentPane;

public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				TelaLogo frame = new TelaLogo();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

public TelaLogo() {
	setAlwaysOnTop(true);

	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 1192, 550);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	contentPane.setLayout(null);

	JDesktopPane desktopPane = new JDesktopPane();
	desktopPane.setAutoscrolls(true);
	desktopPane.setBounds(10, 11, 1156, 489);
	contentPane.add(desktopPane);

	addPropertyChangeListener("bounds", new PropertyChangeListener() {
		public void propertyChange(PropertyChangeEvent evt) {
//				contentPane.setBounds(getBounds().x, getBounds().y, getBounds().width, getBounds().height);
//				desktopPane.setBounds(getBounds().x, getBounds().y, getBounds().width, getBounds().height);
//				contentPane.setSize(getSize());
//				desktopPane.setSize(getSize());
		}
	});

	JInternalFrame internalFrameImagemOriginal = new JInternalFrame("Imagem original");
	internalFrameImagemOriginal.setAutoscrolls(true);
	internalFrameImagemOriginal.setResizable(true);
	internalFrameImagemOriginal.setBounds(122, 45, 400, 400);
	desktopPane.add(internalFrameImagemOriginal);

	JPanel panel = new JPanel();
	internalFrameImagemOriginal.getContentPane().add(panel, BorderLayout.CENTER);

	JLabel lblImagemOriginal = new JLabel("Original");
	lblImagemOriginal.addMouseListener(new MouseAdapter() {
		@Override
		public void mouseClicked(MouseEvent e) {
			ImageIcon iconeTestes = new ImageIcon("D:\\Fernando\\Imagens\\25236558449_a3889618e7_o.jpg");
			lblImagemOriginal.setIcon(iconeTestes);
		}
	});

	lblImagemOriginal.addPropertyChangeListener("icon", new PropertyChangeListener() {
		public void propertyChange(PropertyChangeEvent evt) {
			lblImagemOriginal.setSize(lblImagemOriginal.getIcon().getIconWidth(),
					lblImagemOriginal.getIcon().getIconHeight());
		}
	});
	lblImagemOriginal.setAutoscrolls(true);
	lblImagemOriginal.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
	lblImagemOriginal.setHorizontalTextPosition(SwingConstants.CENTER);
	lblImagemOriginal.setHorizontalAlignment(SwingConstants.LEFT);
	lblImagemOriginal.setVerticalTextPosition(SwingConstants.BOTTOM);
	lblImagemOriginal.setVerticalAlignment(SwingConstants.TOP);

	ImageIcon icone = new ImageIcon("D:\\Fernando\\Imagens\\3h0n588pyips5nhswfzofzntn.jpg");
	lblImagemOriginal.setText("TESTE");
	lblImagemOriginal.setSize(icone.getIconWidth(), icone.getIconHeight());
	lblImagemOriginal.setIcon(icone);

	panel.add(lblImagemOriginal);

	JInternalFrame internalFrameImagemEditada = new JInternalFrame("Imagem editada");
	internalFrameImagemEditada.setResizable(true);
	internalFrameImagemEditada.setBounds(574, 78, 400, 400);
	desktopPane.add(internalFrameImagemEditada);

	JButton btnNewButton = new JButton("Aumentar brilho");
	btnNewButton.setBounds(350, 11, 160, 23);
	desktopPane.add(btnNewButton);

	JButton btnReduzirBrilho = new JButton("Reduzir brilho");
	btnReduzirBrilho.setBounds(520, 11, 160, 23);
	desktopPane.add(btnReduzirBrilho);

	JButton btnAumentarContraste = new JButton("Aumentar contraste");
	btnAumentarContraste.setBounds(690, 11, 160, 23);
	desktopPane.add(btnAumentarContraste);

	JButton btnReduzirContraste = new JButton("Reduzir contraste");
	btnReduzirContraste.setBounds(860, 11, 160, 23);
	desktopPane.add(btnReduzirContraste);

	JButton btnSalvarArquivo = new JButton("SALVAR ARQUIVO");
	btnSalvarArquivo.setBounds(180, 11, 160, 23);
	desktopPane.add(btnSalvarArquivo);

	JButton btnAbrirArquivo = new JButton("ABRIR ARQUIVO");
	btnAbrirArquivo.setBounds(10, 11, 160, 23);
	desktopPane.add(btnAbrirArquivo);
	internalFrameImagemEditada.setVisible(true);
	internalFrameImagemOriginal.setVisible(true);
}

}

Novamente meu “muito obrigado!” a quem puder me ajudar.

Não.
É assim mesmo, faz composições de painéis que fica bem flexível.

Pra isso existem os LayoutManager estude eles e pare de fazer setLayout(null).

1 curtida

Dica:
Implemente cada JInternalFrame em uma classe separada.
Isso facilita a manutenção.

1 curtida

Obrigado pela ajuda. Preciso estudar mais.

2 curtidas