Почему этот код не меняет местами изображения, как предполагалось, когда я нажимаю любую клавишу?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему этот код не меняет местами изображения, как предполагалось, когда я нажимаю любую клавишу?

Сообщение Anonymous »

Моя программа предназначена для отображения 2 панелей изначально с разными изображениями из файла Z_pic1.png и Z_pic2.png. ПРИ НАЖАТИИ ЛЮБОЙ КЛАВИШИ дисплеи на панелях должны поменяться местами. Он не отображает 2 изображения, а только изображение из Z_pic2,png. Любое нажатие клавиши не имеет никакого эффекта. Хотите узнать, что не так.
Мой код:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Z_LayeredPaneExample1_2 extends JFrame {
private JPanel[] panels;
private JLabel[] imageLabels;

public Z_LayeredPaneExample1_2() {
setTitle("Panel Swapper");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);

// Create the panel array
panels = new JPanel[2];
imageLabels = new JLabel[2];

// Load the images
ImageIcon image1 = new ImageIcon("Z_pic1.png");
ImageIcon image2 = new ImageIcon("Z_pic2.png");

// Create the panels and add them to the frame
createPanels(image1, image2);

// Add a key listener to swap the images when a key is pressed
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}

@Override
public void keyPressed(KeyEvent e) {
swapPanels();
}

@Override
public void keyReleased(KeyEvent e) {
}
});

setVisible(true);
}

private void createPanels(ImageIcon image1, ImageIcon image2) {
// Create the panels and set their layout and background color
for (int i = 0; i < panels.length; i++) {
panels = new JPanel();
panels.setLayout(new BorderLayout());
panels.setBackground(Color.WHITE);

// Add the image to the panel
imageLabels = new JLabel(i == 0 ? image1 : image2);
panels.add(imageLabels, BorderLayout.CENTER);

// Add the panel to the frame
add(panels, BorderLayout.WEST);
}
}

private void swapPanels() {
// Swap the images in the panels
ImageIcon temp = (ImageIcon) imageLabels[0].getIcon();
imageLabels[0].setIcon(imageLabels[1].getIcon());
imageLabels[1].setIcon(temp);
}

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


Подробнее здесь: https://stackoverflow.com/questions/787 ... ss-any-key
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»