У меня есть много JPanel
s и один JLabel
. Когда я нажимаю на один JPanel
, я хочу, чтобы мой JLabel
(содержит картинку) переместился на это JPanel
. Как это можно сделать с помощью кода? Я кодирую в NetBeans.Как перемещать Jlabel с одного JPanel на другой
0
A
ответ
2
Предпосылка проста, но фактическое решение может зависеть от того, чего вы хотите достичь.
Поскольку компонент может существовать только в одном контейнере в то время, вам нужно беспокоиться только о добавлении его в новый контейнер ...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.LineBorder;
public class LabelMover {
public static void main(String[] args) {
new LabelMover();
}
public LabelMover() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new BasePane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class BasePane extends JPanel {
private JLabel label;
public BasePane() {
setLayout(new GridLayout(2, 2));
MouseHandler handler = new MouseHandler();
for (int index = 0; index < 4; index++) {
CellPane pane = new CellPane();
pane.addMouseListener(handler);
add(pane);
}
label = new JLabel(":)");
label.setHorizontalAlignment(JLabel.CENTER);
((CellPane)getComponent(0)).add(label);
}
public class MouseHandler extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
Component source = e.getComponent();
if (!label.getParent().equals(source)) {
((CellPane)source).add(label);
revalidate();
repaint();
}
}
}
public class CellPane extends JPanel {
public CellPane() {
setLayout(new BorderLayout());
setBorder(new LineBorder(Color.GRAY));
}
@Override
public Dimension getPreferredSize() {
return new Dimension(50, 50);
}
}
}
}
Смежные вопросы
- 1. Позиционирование JLabel на JPanel
- 2. Позиционирование JLabel на JPanel
- 3. Реализация перетаскивания с одного JPanel на другой
- 4. JLabel с одной панели Ссылка на другой JPanel
- 5. Добавить JLabel на JPanel - BorderLayout
- 6. JLabel to JPanel, перетаскивание
- 7. JLabel не отображается на JPanel
- 8. Добавление jpanel на фоне jlabel
- 9. Добавление JPanel в другой JPanel
- 10. Как перемещать файлы с одного ftp на другой
- 11. как перемещать данные elasticsearch с одного сервера на другой
- 12. Как перемещать файлы с одного пути на другой в C#
- 13. Как перемещать jlabel между двумя точками?
- 14. Как вставить JPanel внутри JLabel?
- 15. Центрирование JLabel в JPanel
- 16. JLabel resizing JPanel
- 17. Как добавить JLabel в JPanel
- 18. Как мне перетащить JLabel из одного JPanel в JFrame на JTextField в другой JPanel в том же JFrame?
- 19. как поставить JLabel центр JPanel
- 20. BorderLayout и JPanel с JLabel
- 21. Как обновить JLabel в JPanel?
- 22. JLabel animation in JPanel
- 23. Добавляет ли JLabel в JPanel «скрыть» JPanel?
- 24. Позиция JLabel в JPanel
- 25. JLabel on JPanel poinging
- 26. Как перемещать форму через JPanel?
- 27. Замена JPanel на другой JPanel
- 28. Как поместить JPanel на другой JPanel?
- 29. Добавить JLabel в JScrollable JPanel
- 30. Teradata: перемещать данные с одного сервера на другой
я начал делать что-то вроде шахмат игра. Шахматные квадраты - 64 JPanels. У меня есть JLabel (изображение), которые представляют фрагменты. Во-первых, я хочу знать, как переместить эту jlabel вокруг JPanels, нажав на JPanel ... (извините плохой английский) – tziuka
Не перемещайте метки, просто меняйте их значки. –
Я понимаю ваше мнение, но я хочу иметь только 32 ярлыка (штук) – tziuka