Я немного смущен, почему моя программа не работает. Я пытаюсь добавить изображение в рамку, когда я нажимаю кнопку. Я проверил в java, что файл существует, и он может найти фотографию. Я также подтвердил, что кнопка работает. Но когда я компилирую и нажимаю кнопку, он ничего не делает ... если кто-то может вести меня в правильном направлении, это было бы очень признательно.Добавление ImageIcon в уже видимый GUI при нажатии кнопки
package gamePractice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class window {
public static void main(String[] args){
JFrame frame = new JFrame("ex");
JPanel panel = new JPanel();
JButton button = new JButton();
button.setText("Press Me");
panel.add(button);
frame.add(panel);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button) {
ImageIcon img = new ImageIcon(getClass().getResource("t.jpg"));
JLabel stickLabel = new JLabel("yes", img, SwingConstants.CENTER);
JPanel panel2 = new JPanel();
panel2.add(stickLabel);
frame.add(panel2);
}
}
});
}
}
Большое спасибо! Отлично работает –
, но панель JPanel = новый JPanel(); с JButton button = new JButton(); может исчезнуть навсегда, потому что JFrame использует BorderLayout – mKorbel
Поскольку «JLabel» без значка изображения или текста и невидимого является невидимым, было бы лучше объявить метку как атрибут класса и добавить ее во время инициализации фрейма. Затем в методе 'actionPerformed (..)' установите значок. Хотя добавление компонентов во время выполнения возможно, это не самый оптимальный способ сделать это (особенно в этом случае). –