Srs.,
Já tentei tudo que pude imaginar e algumas tentativas de alguns tópicos do fórum mas não adianta, então peço a ajuda de vocês.
Abaixo segue a classe JPanel que exibe a imagem:
public class ImagePanel extends JPanel {
private Image img;
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setSize(size);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null);
}
}
A classe JFrame:
public class ImagemJFrame extends JFrame {
private Container container;
public static void main(String[] args) {
ImagemJFrame visual = new ImagemJFrame();
visual.setVisible(true);
}
public ImagemJFrame() {
super();
container = getContentPane();
container.setLayout(null);
criarBotoes();
init();
initComponents();
}
public void init() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLocation(200, 200);
}
public void initComponents() {
Container box = Box.createHorizontalBox();
box.add(jbIniciar);
box.add(Box.createHorizontalStrut(30));
box.add(jbUm);
box.add(Box.createHorizontalStrut(10));
box.add(new JButton("Dois"));
box.add(Box.createHorizontalStrut(10));
box.add(new JButton("Três"));
box.setBounds(10, 10, ((int) getSize().getWidth()) - 20, 20);
container.add(box);
JLabel label = new JLabel("Texto");
label.setBounds(10, 40, 50, 20);
container.add(label);
/* Colocando aqui funciona!!!
*
* JPanel panelImagens = getPanel();
panelImagens.setBounds(10, 60, 255, 100);
container.add(panelImagens);*/
}
public JPanel getPanel() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 3));
Image image = toolkit.getImage("imagem.jpg");
panel.add(new ImagePanel(image));
image = toolkit.getImage("imagem.jpg");
panel.add(new ImagePanel(image));
image = toolkit.getImage("imagem.jpg");
panel.add(new ImagePanel(image));
return panel;
}
public void criarBotoes() {
jbIniciar = new JButton("Iniciar");
jbIniciar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
jbUm = new JButton("Um");
jbUm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JPanel panelImagens = getPanel();
panelImagens.setBounds(10, 60, 255, 100);
container.add(panelImagens);
}
});
}
private JButton jbIniciar;
private JButton jbUm;
}
O objeto é clicar no botão “Um” e exibir um JPanel que conterá três JPanels do tipo ImagePanel.
Problema: Quando clico no botão “Um” o código no ActionListener é executado mas o JPanel não é exibido porém quando maximizo a tela o mesmo é renderizado, portanto minha pergunta é: O que faço para renderizar a tela, ou JPanel para as imagens sejam exibidas sem redimensionar a tela?
Obrigado.