Можно ли как-то клонировать JLabel в Java?

130
26 июля 2019, 02:30

В общем мне нужно что-то типа стрельбы из автомата для небольшого проекта, но я совсем недавно стал изучать Java поэтому не знаю как. По сути вся игра состоит из JLabelОВ, то и дело перемещающихся в нужные точки. Из всего осталось только пули сделать. Тут и встаёт вопрос: можно ли как-то клонировать один JLabel, после чего его клон "полетит" вперёд, а он сам останется на том же месте. Я не знаю, может какие библиотеки есть...

Answer 1

Вот набросал пример

public static void main(String[] arg){
        JFrame f = new JFrame();
        f.setSize(500,500);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel p = new JPanel();
        f.getContentPane().setLayout(new BorderLayout());
        f.getContentPane().add(p,BorderLayout.CENTER);
        MyLabel l = new MyLabel();
        p.add(l);
        l.setLocation(0,0);
    JButton b = new JButton(new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            MyLabel lc = l.clone();
            Point point0 = lc.getLocation();
            lc.setLocation(point0.x+20,point0.y);
            p.add(lc);
            SwingUtilities.updateComponentTreeUI(p);
        }
    });
    b.setText("выстрел");
    f.getContentPane().add(b,BorderLayout.NORTH);
    f.setVisible(true);
}

private class MyLabel extends JLabel{
    public MyLabel() {
        super("x");
        Dimension dim = new Dimension(15,15);
        setPreferredSize(dim);
        setMaximumSize(dim);
        setMinimumSize(dim);
        setBorder(BorderFactory.createLineBorder(Color.RED));
    }
    @Override
    public MyLabel clone(){
        MyLabel l = new MyLabel();
        l.setText(getText());
        l.setIcon(getIcon());
        return l;
    }
}
READ ALSO
JavaFX и многопоточность

JavaFX и многопоточность

Задача - при нажатии на определенную кнопку программы (JavaFX GUI) запустить гифку ожидания, которая будет крутиться, пока вполняется основной...

126
Упростить дерево стилей css

Упростить дерево стилей css

Как можно упростить стили (паддинг можно применять только к a):

140
Cordova: проблема вывода изображений по внешнему url из базы SQLite

Cordova: проблема вывода изображений по внешнему url из базы SQLite

столкнулась со следующей проблемой: вывожу из БД url в на странице, в браузере картинка отображается а в debug apk на устройстве - нетЕсли жестко...

131