чего-то наделала, пишем на русском, начало drag/drop
This commit is contained in:
parent
cd64afbf92
commit
d9410fa68b
@ -15,9 +15,13 @@ public class EntityLocomotive {
|
||||
{
|
||||
return (double) Speed * 100 / Weight;
|
||||
}
|
||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean horns, boolean seifbatteries) {
|
||||
public void Init(int speed, double weight, Color bodyColor/*, Color additionalColor, boolean horns, boolean seifbatteries*/) {
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
}
|
||||
|
||||
public void SetBodyColor(Color color){
|
||||
BodyColor = color;
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,19 @@ package ProjectElectricLocomotive;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import javax.swing.border.Border;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.io.IOException;
|
||||
|
||||
public class FormLocomotiveConfig {
|
||||
public class FormLocomotiveConfig{
|
||||
|
||||
public DrawingLocomotive _loco;
|
||||
private JPanel MainPanel;
|
||||
private JPanel groupBoxObjectParameters;
|
||||
private JPanel groupBoxColors;
|
||||
@ -13,27 +24,254 @@ public class FormLocomotiveConfig {
|
||||
private JLabel labelWeight;
|
||||
private JCheckBox checkBoxHorns;
|
||||
private JCheckBox checkBoxSeifBatteries;
|
||||
private JLabel lableSimpleObject;
|
||||
public JLabel lableSimpleObject;
|
||||
private JLabel labelModifiedObject;
|
||||
public JButton buttonOk;
|
||||
private JButton buttonClose;
|
||||
private JLabel labelColor;
|
||||
private JLabel labelDopColor;
|
||||
private JPanel pictureBoxObject;
|
||||
public JPanel pictureBoxObject;
|
||||
|
||||
|
||||
public JPanel getPictureBoxObject(){
|
||||
return pictureBoxObject;
|
||||
return MainPanel;
|
||||
}
|
||||
|
||||
// MouseListener ml = new MouseListener() {
|
||||
// @Override
|
||||
// public void mouseClicked(MouseEvent e) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void mousePressed(MouseEvent e) {
|
||||
// JComponent jc = (JComponent)e.getSource();
|
||||
// TransferHandler th = jc.getTransferHandler();
|
||||
// th.exportAsDrag(jc, e, TransferHandler.COPY);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void mouseReleased(MouseEvent e) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void mouseEntered(MouseEvent e) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void mouseExited(MouseEvent e) {
|
||||
//
|
||||
// }
|
||||
// };
|
||||
|
||||
// private class Canvas extends JComponent{
|
||||
// public Canvas(){
|
||||
// }
|
||||
// public void paintComponent (Graphics g){
|
||||
// if ( == null){
|
||||
// return;
|
||||
// }
|
||||
// super.paintComponents (g) ;
|
||||
// Graphics2D g2d = (Graphics2D)g;
|
||||
// _train.DrawTransport(g2d);
|
||||
// super.repaint();
|
||||
// }
|
||||
// }
|
||||
//класс для перетаскивания типа объекта
|
||||
private class LabelTransferHandler extends TransferHandler {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new StringSelection(((JLabel)c).getText());
|
||||
}
|
||||
}
|
||||
//что бы цвет можно было таскать
|
||||
private class ColorTransferable implements Transferable {
|
||||
private Color color;
|
||||
private static final DataFlavor colorDataFlavor = new DataFlavor(Color.class, "Color");
|
||||
|
||||
public ColorTransferable(Color color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return new DataFlavor[]{colorDataFlavor};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
return colorDataFlavor.equals(flavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return color;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
//для перетаскивания цвета
|
||||
private class PanelTransferHandler extends TransferHandler {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new ColorTransferable(((JPanel)c).getBackground());
|
||||
}
|
||||
}
|
||||
//для обработки нажатий
|
||||
private class LabelMouseAdapter extends MouseAdapter {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JLabel)e.getComponent()).getTransferHandler().exportAsDrag(((JLabel)e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
private class PanelMouseAdapter extends MouseAdapter{
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JPanel)e.getComponent()).getTransferHandler().exportAsDrag(((JPanel)e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
|
||||
//что бы wheel'ы можно было тоскать
|
||||
private class WheelTransferable implements Transferable {
|
||||
private IDrawingWheels wheelDrawing;
|
||||
private static final DataFlavor wheelDrawingDataFlavor = new DataFlavor(IDrawingWheels.class, "Wheel Drawing");
|
||||
|
||||
public WheelTransferable(IDrawingWheels wheelDrawing) {
|
||||
this.wheelDrawing = wheelDrawing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return new DataFlavor[]{wheelDrawingDataFlavor};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
return flavor.equals(wheelDrawingDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return wheelDrawing;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
//для отрисовки wheel'ов, которые можно взять и потащить
|
||||
private class ComponentWheel extends JComponent {
|
||||
public IDrawingWheels wheelDrawing;
|
||||
|
||||
public ComponentWheel(IDrawingWheels _wheelDrawing) {
|
||||
wheelDrawing = _wheelDrawing;
|
||||
this.addMouseListener(
|
||||
new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((ComponentWheel) e.getComponent()).getTransferHandler().exportAsDrag(((ComponentWheel) e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
);
|
||||
this.setTransferHandler(
|
||||
new TransferHandler() {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new WheelTransferable(((ComponentWheel) c).wheelDrawing);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public FormLocomotiveConfig()
|
||||
{
|
||||
MainPanel.setPreferredSize(new Dimension(900, 400));
|
||||
pictureBoxObject.setPreferredSize(new Dimension(300, 300)); // почему только на это реагируем, а?
|
||||
// groupBoxObjectParameters.setPreferredSize(new Dimension(600,400));
|
||||
// groupBoxColors.setPreferredSize(new Dimension(210,200));
|
||||
}
|
||||
Border br = BorderFactory.createLineBorder(Color.cyan);
|
||||
|
||||
SpinnerModel numSpeed = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
numericUpDownSpeed = new JSpinner(numSpeed);
|
||||
|
||||
SpinnerModel numWeight = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
numericUpDownWeight = new JSpinner(numWeight);
|
||||
|
||||
lableSimpleObject.setTransferHandler(new LabelTransferHandler());
|
||||
lableSimpleObject.addMouseListener(new LabelMouseAdapter());
|
||||
lableSimpleObject.setBorder(br);
|
||||
|
||||
labelModifiedObject.setTransferHandler(new LabelTransferHandler());
|
||||
labelModifiedObject.addMouseListener(new LabelMouseAdapter());
|
||||
labelModifiedObject.setBorder(br);
|
||||
|
||||
labelColor.setBorder(br);
|
||||
labelColor.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support)
|
||||
{
|
||||
try{
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if(_loco == null) return false;
|
||||
_loco.EntityLocomotive.SetBodyColor(color);
|
||||
return true;
|
||||
}
|
||||
catch(UnsupportedFlavorException | IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
labelDopColor.setBorder(br);
|
||||
labelDopColor.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support)
|
||||
{
|
||||
try{
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if(_loco == null) return false;
|
||||
if(!(_loco instanceof DrawingLocomotive))
|
||||
return false;
|
||||
((EntityElectricLocomotive)_loco.EntityLocomotive).SetBodyColor(color);
|
||||
return true;
|
||||
}
|
||||
catch(UnsupportedFlavorException | IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
public void PanelMouse_Down(){
|
||||
|
||||
}
|
||||
// lableSimpleObject.addMouseListener(ml);
|
||||
// labelModifiedObject.setTransferHandler(new TransferHandler("rar"));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
package ProjectElectricLocomotive;
|
||||
import javax.swing.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
|
||||
public class FrameLocomotiveConfig extends JFrame{
|
||||
|
||||
|
||||
public FormLocomotiveConfig _formLocomotiveConfig;
|
||||
public FrameLocomotiveConfig() {
|
||||
|
||||
super();
|
||||
setTitle("Конфиг");
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user