Прокрутить колесико мыши, чтобы добавить объектов - Java
Формулировка задачи:
Доброе времени суток!
У меня есть код, которая позволяет перемещать объектов с помощью мыши, но как бы сделать, чтобы с помощью прокрутки мыши, чтобы добавить ещё несколько объектов(MyLabel)?
package lab10; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Lab10{ public static void main(String[] args){ MyWindow window = new MyWindow(); window.setVisible(true); window.setPreferredSize(new Dimension(800,600)); window.pack(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class MyWindow extends JFrame{ public MyWindow(){ super("Drag Test"); Container container = getContentPane(); container.setLayout(null); MyLabel label1 = new MyLabel("Mover 1"); MyLabel label2 = new MyLabel("Mover 2"); MyLabel label3 = new MyLabel("Mover 3"); MyLabel label4 = new MyLabel("Mover 4"); MyGrid g = new MyGrid(); container.add(label1); container.add(label2); container.add(label3); container.add(label4); container.add(g,BorderLayout.CENTER); g.setPreferredSize(new Dimension(0,160)); g.setBackground(Color.blue); label1.setOpaque(true); label1.setForeground(Color.white); label1.setBackground(Color.blue); label1.setBounds(20,10,100,50); label2.setOpaque(true); label2.setBackground(Color.white); label2.setBounds(140,10,100,50); label3.setOpaque(true); label3.setBackground(Color.green); label3.setBounds(20,140,100,50); label4.setOpaque(true); label4.setBackground(Color.yellow); label4.setBounds(140,140,100,50); } } class MyGrid extends JPanel{ GridBagConstraints arr = new GridBagConstraints(); private JLabel l1; JPanel panel = new JPanel(); public MyGrid(){ super(); LayoutManager overlay = new OverlayLayout(panel); panel.setLayout(overlay); panel.setLayout(new GridBagLayout()); arr.insets = new Insets(5,5,5,5); l1 = new JLabel("Hello"); arr.gridx = 1; arr.gridy = 1; panel.add(l1,arr); } } class MyLabel extends JLabel implements MouseMotionListener{ public MyLabel(String text){ super.setText(text); addMouseMotionListener(this); } public void mouseDragged(MouseEvent e){ setLocation(this.getX()+e.getX()-this.getWidth()/2,this.getY()+e.getY()-this.getHeight()/2); } public void mouseMoved(MouseEvent e){ } }
Решение задачи: «Прокрутить колесико мыши, чтобы добавить объектов»
textual
Листинг программы
import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Start extends JFrame implements MouseWheelListener { List<JLabel> labels = new ArrayList<JLabel>(); public Start() { super("This is my title"); this.setSize(600, 400); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); JPanel contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(new FlowLayout()); this.addMouseWheelListener(this); this.setVisible(true); } public static void main(String[] args) { new Start(); } @Override public void mouseWheelMoved(MouseWheelEvent e) { JLabel label = null; if (0 < e.getWheelRotation()) { label = new JLabel(); this.add(label); label.setOpaque(true); label.setForeground(Color.white); label.setBackground(Color.blue); label.setBounds(100, 10, 100, 50); label.setText("Moved"); labels.add(label); } if (0 > e.getWheelRotation() && labels.size() !=0) { label = labels.remove(labels.size() - 1); labels.remove(label); this.remove(label); this.repaint(); } } }