В моем приложении у меня есть список 6 Jlabels
, которые добавляются в contentPane
в цикле for
.После этого я добавляю 2 JButtons
- один для удаления всех этикеток и второй для их добавления:
public class Test {
private JFrame frame;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test window = new Test();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Test() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 960, 620);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.getContentPane().setLayout(null);
frame.getContentPane().setBackground(new Color(30, 30, 30));
LinkedList<JLabel> labels = new LinkedList<>();
for(int i = 0 ; i < 6 ; i++) {
labels.get(i).setSize(280, 50);
labels.setBackground(new Color(75, 75, 75));
labels.setOpaque(true);
}
Button buttonAdd = new JButton("Add");
buttonAdd.setBounds(310, 15, 150, 50);
buttonAdd.addMouseListener(new MouseAdapter() {
@Override
public final void mouseClicked(MouseEvent event) {
for(int i = 0 ; i < 6 ; i++) {
labels.get(i).setLocation(15, 15+50*i);
frame.getContentPane().add(labels.get(i));
}
}
});
Button buttonRemove = new JButton("Remove");
buttonRemove.setBounds(310, 15, 150, 50);
buttonRemove.addMouseListener(new MouseAdapter() {
@Override
public final void mouseClicked(MouseEvent event) {
for(int i = 0 ; i < 6 ; i++) {
frame.getContentPane().remove(labels.get(i));
}
}
});
}
}
Когда я добавил 6 этикеток за пределы линстеров, они были правильно добавлены в ContentPane
и отображается.Тем не менее, когда я пытаюсь сделать это с помощью кнопок, при нажатии buttonAdd
ничего не происходит.Они не отображаются.
Я пытался связываться с иерархией, устанавливая индексы вручную, но ничего не получалось.Я подозреваю, что MouseListeners, но я понятия не имею, почему это не работает.