diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..73f69e0958611ac6e00bde95641f6699030ad235 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc1ee5354106fde6ed245d0d70c25c7fc0192996 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000000000000000000000000000000000000..712ab9d985c20018a0c97b93d2148ac1ffe588a5 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cf4e44a45e0af8d34de7a2ec8777718715eb41b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000000000000000000000000000000000000..797acea53eb091cf5b30518802c3073f544adeed --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/design/Controller/CopyAction.java b/src/main/java/design/Controller/CopyAction.java new file mode 100644 index 0000000000000000000000000000000000000000..a08911cc7800fa00cf5150c5bc54bb5a7c2c93cc --- /dev/null +++ b/src/main/java/design/Controller/CopyAction.java @@ -0,0 +1,30 @@ +package design.Controller; + +import design.pojo.ImageLabel; +import javafx.scene.input.Clipboard; +import javafx.scene.input.ClipboardContent; + +public class CopyAction { + public CopyAction () { + if(ImageLabel.getSelectedPictures().size()<=0) { + return; + } + if(ImageLabel.getCutedPictures().size() > 0) { + for(ImageLabel pNode : ImageLabel.getCutedPictures()) { + pNode.getImageView().setEffect(null); + } + ImageLabel.getCutedPictures().clear(); + } + Clipboard clipboard = Clipboard.getSystemClipboard(); + ClipboardContent clipboardContent = new ClipboardContent(); + clipboard.clear(); + for(ImageLabel pNode : ImageLabel.getSelectedPictures()) { + ImageLabel.getSelectedPictureFiles().add(pNode.getImageFile()); + } + clipboardContent.putFiles(ImageLabel.getSelectedPictureFiles()); + clipboard.setContent(clipboardContent); + clipboard = null; + clipboardContent = null; + } + +} diff --git a/src/main/java/design/Controller/DeleteAction.java b/src/main/java/design/Controller/DeleteAction.java new file mode 100644 index 0000000000000000000000000000000000000000..e5ef15097d3719278433e4f5d7e9467f4e25575f --- /dev/null +++ b/src/main/java/design/Controller/DeleteAction.java @@ -0,0 +1,34 @@ +package design.Controller; + +import design.ViewController.ImagePreviewViewController; +import design.ViewController.fxmlTest; +import design.pojo.ImageLabel; + +public class DeleteAction { + ImagePreviewViewController imagePreviewViewController; + public DeleteAction (ImagePreviewViewController imagePreviewViewController) { + this.imagePreviewViewController = imagePreviewViewController; + + if(ImageLabel.getSelectedPictures().size()<=0) { + return; + } + if(ImageLabel.getCutedPictures().size() > 0) { + for(ImageLabel pNode : ImageLabel.getCutedPictures()) { + pNode.getImageView().setEffect(null); + } + ImageLabel.getCutedPictures().clear(); + } + + if(MyAlert.showAlert("是否删除选中的图片?", "", fxmlTest.mainStage)) { + for(ImageLabel pNode : ImageLabel.getSelectedPictures()) { + imagePreviewViewController.getImageLabelsPane().getChildren().remove(pNode); + pNode.getImageFile().delete(); + } + ImageLabel.getSelectedPictureFiles().clear(); + + }else { + ImageLabel.getSelectedPictureFiles().clear(); + } + ImageLabel.clearSelected(); + } +} diff --git a/src/main/java/design/Controller/ImagePreviewController.java b/src/main/java/design/Controller/ImagePreviewController.java index 78c81054737199f352ad072c9954fb663223ce82..bb88a0a1455955a00675344b8849abbf886c0003 100644 --- a/src/main/java/design/Controller/ImagePreviewController.java +++ b/src/main/java/design/Controller/ImagePreviewController.java @@ -25,6 +25,12 @@ import java.util.ArrayList; */ public class ImagePreviewController { + private ImagePreviewController imagePreviewController = this; + + private FlowPane imageLabelsPane; + + private TipsController tipsController; + private ObservableList imageLabels; private String oldPath; @@ -44,21 +50,24 @@ public class ImagePreviewController { oldPath = ""; imageLabels = FXCollections.observableArrayList(); } - public ImagePreviewController(MenuController menuController, ShowImageController showImageController){ + public ImagePreviewController(MenuController menuController, ShowImageController showImageController, TipsController tipsController){ this(); this.menuController = menuController; this.showImageController = showImageController; + this.tipsController = tipsController; } /** * 读取选中目录下的所有图片文件 并存放在数组中 同时获取图片数量和总大小 * @param directoryFile 从TreeController中传入 选中目录的文件 */ + long size; public void createImageViews(File directoryFile,FlowPane imageLabelsPane){ + this.imageLabelsPane = imageLabelsPane; // 清空图片列表 imageLabels.clear(); - imageLabelsPane.getChildren().clear(); + imageCount = 0; - long size = 0; + size = 0; // 排除目录相同的情况 和 文件为空的情况 if(directoryFile == null || oldPath.equals(directoryFile.getPath())){ return; @@ -79,7 +88,10 @@ public class ImagePreviewController { // 将图片总大小格式化为 MB imageTotalSize = BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024*1024),4,RoundingMode.HALF_EVEN); - imageLabelsPane.getChildren().addAll(imageLabels); + imageLabelsPane.getChildren().remove(0, imageLabelsPane.getChildren().size()); + for(ImageLabel imagelabel : imageLabels){ + imageLabelsPane.getChildren().add(imagelabel); + } } /** * 创建一个装载图片的标签 @@ -90,7 +102,7 @@ public class ImagePreviewController { Image image = new Image("file:" + file.getPath(),80,80,true,true); ImageView imageView = new ImageView(image); - ImageLabel imageLabel = new ImageLabel(); + ImageLabel imageLabel = new ImageLabel(tipsController); imageLabel.setText(file.getName()); imageLabel.setWrapText(true); imageLabel.setTextOverrun(OverrunStyle.CENTER_ELLIPSIS); @@ -99,16 +111,16 @@ public class ImagePreviewController { imageLabel.setImageFileProperty(file); imageLabel.setContentDisplay(ContentDisplay.TOP); imageLabel.setPrefSize(120,120); - imageLabel.setContextMenu(menuController.getImageControlMenu()); + imageLabel.setContextMenu(menuController.getImageControlMenu(imagePreviewController)); imageLabel.setOnMouseClicked(event -> { - if(event.getButton().equals(MouseButton.PRIMARY)){ - System.out.println("左键"); - imageLabel.setScaleX(3); - imageLabel.setScaleY(3); - - } +// if(event.getButton().equals(MouseButton.PRIMARY)){ +// System.out.println("左键"); +// imageLabel.setScaleX(3); +// imageLabel.setScaleY(3); +// +// } if(event.getButton().equals(MouseButton.SECONDARY)){ System.out.println("右键"); } @@ -116,10 +128,12 @@ public class ImagePreviewController { showImageController.createStage(presentFileList,imageLabel.getImageFileProperty()); } }); - imageLabel.setOnMouseExited(event -> { - imageLabel.setScaleX(1); - imageLabel.setScaleY(1); - }); +// imageLabel.setOnMouseExited(event -> { +// imageLabel.setScaleX(1); +// imageLabel.setScaleY(1); +// }); + + imageLabel.addPictureNodeListener(); return imageLabel; } @@ -134,4 +148,19 @@ public class ImagePreviewController { public BigDecimal getImageTotalSize() { return imageTotalSize; } + + public String getOldPath() { + return oldPath; + } + + public void refreshImageViews(File file) { + imageLabels.add(createImageLabel(file)); + imageCount++; + size+=file.length(); + imageTotalSize = BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024*1024),4,RoundingMode.HALF_EVEN); + imageLabelsPane.getChildren().remove(0, imageLabelsPane.getChildren().size()); + for(ImageLabel imagelabel : imageLabels){ + imageLabelsPane.getChildren().add(imagelabel); + } + } } diff --git a/src/main/java/design/Controller/MenuController.java b/src/main/java/design/Controller/MenuController.java index fb1a28291a23ea53c934a22b5e1356ec0d8e4e8b..93cb7a8772b9482b94426856eade7c6a7d4cfa5b 100644 --- a/src/main/java/design/Controller/MenuController.java +++ b/src/main/java/design/Controller/MenuController.java @@ -1,7 +1,14 @@ package design.Controller; +import design.ViewController.ImagePreviewViewController; +import design.pojo.ImageLabel; +import javafx.scene.Node; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.FlowPane; +import javafx.scene.text.Text; /** * User: 86176 @@ -11,21 +18,66 @@ import javafx.scene.control.MenuItem; */ public class MenuController { + private ImagePreviewViewController imagePreviewViewController; + + private Node node; + + private ImagePreviewController imagePreviewController; + private ContextMenu imageControlMenu; private ContextMenu treeControlMenu; + public MenuController (Node node, ImagePreviewViewController imagePreviewViewController) { + this.imagePreviewViewController = imagePreviewViewController; + this.node = node; + } + /** * * @return 获取图片的右键菜单 */ - public ContextMenu getImageControlMenu(){ + public ContextMenu getImageControlMenu(ImagePreviewController imagePreviewController){ if(imageControlMenu == null){ MenuItem menuItem1 = new MenuItem("复制"); MenuItem menuItem2 = new MenuItem("粘贴"); MenuItem menuItem3 = new MenuItem("删除"); MenuItem menuItem4 = new MenuItem("重命名"); imageControlMenu = new ContextMenu(menuItem1,menuItem2,menuItem3,menuItem4); + + menuItem1.setOnAction(e->{ + new CopyAction(); + }); + + menuItem2.setOnAction(e->{ + new PasteAction(imagePreviewController); + }); + + menuItem3.setOnAction(e->{ + new DeleteAction(imagePreviewViewController); + }); + + menuItem4.setOnAction(e->{ + + }); + + node.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> { + if (e.getButton() == MouseButton.SECONDARY) + imageControlMenu.show(node, e.getScreenX(), e.getScreenY()); + else { + if (imageControlMenu.isShowing()) + imageControlMenu.hide(); + } + }); + + //点击空白处清空已选 + node.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> { + Node clickNode = e.getPickResult().getIntersectedNode(); + if (clickNode instanceof FlowPane && !(clickNode instanceof ImageLabel) && !(clickNode instanceof Text)) {// 鼠标点击非图片节点 + ImageLabel.clearSelected();// 清空已选 + } + }); + } return imageControlMenu; } diff --git a/src/main/java/design/Controller/MyAlert.java b/src/main/java/design/Controller/MyAlert.java new file mode 100644 index 0000000000000000000000000000000000000000..19c3ffd7a1975cb1b762eecc2b1368b305e20404 --- /dev/null +++ b/src/main/java/design/Controller/MyAlert.java @@ -0,0 +1,30 @@ +package design.Controller; + +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; +import javafx.stage.Window; + +import java.util.Optional; + +public class MyAlert { + public static boolean showAlert(String p_header, String p_message, Window stage){ + + Alert alert = new Alert(Alert.AlertType.CONFIRMATION,p_message,new ButtonType("取消", ButtonBar.ButtonData.NO), + new ButtonType("确定", ButtonBar.ButtonData.YES)); + + alert.setTitle("注意窗口"); + alert.setHeaderText(p_header); + + alert.initOwner(stage); + + Optional buttonType = alert.showAndWait(); + + if(buttonType.get().getButtonData().equals(ButtonBar.ButtonData.YES)){ + return true; + } + else { + return false; + } + } +} diff --git a/src/main/java/design/Controller/PasteAction.java b/src/main/java/design/Controller/PasteAction.java new file mode 100644 index 0000000000000000000000000000000000000000..474fe65cff5f00cc14fee40f183de6dbdf9ad251 --- /dev/null +++ b/src/main/java/design/Controller/PasteAction.java @@ -0,0 +1,120 @@ +package design.Controller; + +import design.pojo.ImageLabel; +import javafx.scene.input.Clipboard; +import javafx.scene.input.DataFormat; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +public class PasteAction { + ImagePreviewController imagePreviewController; + public PasteAction (ImagePreviewController imagePreviewController) { + this.imagePreviewController = imagePreviewController; + Clipboard clipboard = Clipboard.getSystemClipboard(); + List files = (List) (clipboard.getContent(DataFormat.FILES)); + if (files.size() <= 0) { + return; + } + if (ImageLabel.getCutedPictures().size() > 0) { + File first = files.get(0); + if(first.getParentFile().getAbsolutePath().compareTo(imagePreviewController.getOldPath()) == 0){ + for(ImageLabel pNode : ImageLabel.getCutedPictures()) { + pNode.getImageView().setEffect(null); + } + ImageLabel.clearSelected(); + ImageLabel.getCutedPictures().clear(); + ImageLabel.getSelectedPictureFiles().clear(); + clipboard.clear(); + return; + } + } + for(File oldFile : files) { + String newName = Pasterename(imagePreviewController.getOldPath(),oldFile.getName()); + File newFile = new File(imagePreviewController.getOldPath()+File.separator+newName); + try { + newFile.createNewFile(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(newFile.exists()) { + try { + copyFile(oldFile,newFile); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + //该段代码应该把刚刚粘贴的图片加载到图片数组中,这样界面才能刷新显示出新加的图片 +// FileInputStream fis = new FileInputStream(newFile); +// Image image = new Image(fis,100,100,true,true); +// ImageView imageView = new ImageView(image); +// ImageLabel I1 = new ImageLabel(newFile.getName(),imageView); +// I1.setImageFileProperty(newFile); +// mainUI.getPictures().add(I1); + + imagePreviewController.refreshImageViews(newFile); + + + if(ImageLabel.getCutedPictures().size()>0) { + oldFile.delete(); + } + +// imagePreviewViewController.showPicture(); + + + + } + clipboard.clear(); + } + private void copyFile(File fromFile, File toFile) throws IOException { + FileInputStream inputStream = new FileInputStream(fromFile); + FileOutputStream outputStream = new FileOutputStream(toFile); + byte[] b = new byte[1024]; + int byteRead; + while ((byteRead = inputStream.read(b)) > 0) { + outputStream.write(b, 0, byteRead); + } + inputStream.close(); + outputStream.close(); + + } + private String Pasterename(String theFilePath, String name) { + String newName = name; + File fatherPathFile = new File(theFilePath); + File[] filesInFatherPath = fatherPathFile.listFiles(); + for (File fileInFatherPath : filesInFatherPath) { + String fileName = fileInFatherPath.getName(); + int cmp = newName.compareTo(fileName); + if (cmp == 0) { + String str = null; + int end = newName.lastIndexOf("."), start = newName.lastIndexOf("_副本"); + if (start != -1) { + str = newName.substring(start, end); + int num = 1; + try { + num = Integer.parseInt(str.substring(str.lastIndexOf("_副本") + 3)) + 1; + int cnt = 0, d = num - 1; + while (d != 0) { + d /= 10; + cnt++; + } + newName = newName.substring(0, end - cnt) + num + newName.substring(end); + } catch (Exception e) { + newName = newName.substring(0, end) + "_副本1" + newName.substring(end); + } + + } else { + newName = newName.substring(0, end) + "_副本1" + newName.substring(end); + } + } + } + return newName; + } +} diff --git a/src/main/java/design/Controller/TipsController.java b/src/main/java/design/Controller/TipsController.java index fec8b71a8cb3c0194eeec11b765cce7c6cd655eb..eb2b8c015cd754d3b5707bb820d1045c92d94edb 100644 --- a/src/main/java/design/Controller/TipsController.java +++ b/src/main/java/design/Controller/TipsController.java @@ -12,6 +12,18 @@ public class TipsController { private ImagePreviewController imageController; + private Label tipsLabel; + + public void setImageController(ImagePreviewController imageController) { + this.imageController = imageController; + } + + private int selectedCount = 0; + + int imageCount; + + double imageTotalSize; + public TipsController(){ } @@ -20,13 +32,19 @@ public class TipsController { } public void createTipsLabel(Label tipsLabel){ - int imageCount = imageController.getImageCount(); - double imageTotalSize = imageController.getImageTotalSize().doubleValue(); + this.tipsLabel = tipsLabel; + this.imageCount = imageController.getImageCount(); + this.imageTotalSize = imageController.getImageTotalSize().doubleValue(); /// - int selectedCount = 0; String text = " "+imageCount+"张图片("+imageTotalSize+"MB)---选中"+selectedCount+"张照片"; tipsLabel.setText(text); tipsLabel.setStyle("-fx-background-color: pink"); } + + public void setSelectedCount(int selectedCount) { + this.selectedCount = selectedCount; + String text = " "+imageCount+"张图片("+imageTotalSize+"MB)---选中"+this.selectedCount+"张照片"; + tipsLabel.setText(text); + } } diff --git a/src/main/java/design/Controller/TreeController.java b/src/main/java/design/Controller/TreeController.java index f9f1ddcc7fbf1516fdc5956ac7a27e523cd04700..a8ab53926822bbabf7f9cbc80bcfcce9ea3a1a5b 100644 --- a/src/main/java/design/Controller/TreeController.java +++ b/src/main/java/design/Controller/TreeController.java @@ -26,7 +26,7 @@ public class TreeController { private TreeItem rootNode; public TreeController(){ - rootNode = createTreeNode(new File("C:\\Program Files (x86)")); + rootNode = createTreeNode(new File("G:\\Program Files (x86)")); } public TreeController(MenuController menuController){ this(); diff --git a/src/main/java/design/ViewController/ImagePreviewViewController.java b/src/main/java/design/ViewController/ImagePreviewViewController.java index 19d0855a795d8d6be6bf325818552ba4ca77b323..b4efc52373ed18c3d23d83f86521c8c8c75d85fc 100644 --- a/src/main/java/design/ViewController/ImagePreviewViewController.java +++ b/src/main/java/design/ViewController/ImagePreviewViewController.java @@ -19,6 +19,7 @@ import java.io.File; * Description: */ public class ImagePreviewViewController { + private ImagePreviewViewController imagePreviewViewController = this; private TreeController treeController; private ImagePreviewController imageController; private TipsController tipsController; @@ -37,11 +38,12 @@ public class ImagePreviewViewController { public ImagePreviewViewController(){ - menuController = new MenuController(); + menuController = new MenuController(imageLabelsPane,imagePreviewViewController); treeController = new TreeController(menuController); showImageController = new ShowImageController(); - imageController = new ImagePreviewController(menuController, showImageController); - tipsController = new TipsController(imageController); + tipsController = new TipsController(); + imageController = new ImagePreviewController(menuController, showImageController, tipsController); + tipsController.setImageController(imageController); } public void initialize(){ @@ -70,4 +72,8 @@ public class ImagePreviewViewController { }); } + + public FlowPane getImageLabelsPane() { + return imageLabelsPane; + } } diff --git a/src/main/java/design/ViewController/fxmlTest.java b/src/main/java/design/ViewController/fxmlTest.java index 8c8f54f22d26eea9ee9761d00d2d956ff8b56f93..9c3d89d7776bd2fc5a4cd93dac5feb8e1fc4ef87 100644 --- a/src/main/java/design/ViewController/fxmlTest.java +++ b/src/main/java/design/ViewController/fxmlTest.java @@ -5,6 +5,7 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; +import javafx.stage.Window; import java.net.URL; @@ -15,6 +16,8 @@ import java.net.URL; * Description: */ public class fxmlTest extends Application { + + public static Window mainStage; public static void main(String[] args) { launch(args); } diff --git a/src/main/java/design/pojo/ImageLabel.java b/src/main/java/design/pojo/ImageLabel.java index 28e19e08b842ccf1c36c15257359b644fa5400cf..c45d4d9157deb205350101d04c3936dd46a751e0 100644 --- a/src/main/java/design/pojo/ImageLabel.java +++ b/src/main/java/design/pojo/ImageLabel.java @@ -1,11 +1,19 @@ package design.pojo; +import design.Controller.TipsController; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; +import javafx.beans.property.BooleanProperty; import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.Node; import javafx.scene.control.Label; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; import java.io.File; +import java.util.ArrayList; /** * User: 86176 @@ -19,6 +27,23 @@ public class ImageLabel extends Label { // 是否被选中 默认没被选中 private boolean isSelected; + private ImageLabel imageLabel = this; + + public BooleanProperty selected = new SimpleBooleanProperty(); + + protected static ArrayList selectedPictures = new ArrayList<>(); + protected static ArrayList cutedPictures = new ArrayList<>(); + protected static ArrayList selectedPictureFiles = new ArrayList<>(); + // + private TipsController tipsController; + + + + + public ImageLabel(TipsController tipsController) { + this.tipsController = tipsController; + } + public ImageLabel(){ } @@ -49,7 +74,66 @@ public class ImageLabel extends Label { return isSelected; } - public void setSelected(boolean selected) { - isSelected = selected; +// public void setSelected(boolean selected) { +// isSelected = selected; +// } + + public void setSelected(boolean value) { + boolean istrue = selected.get(); + selected.set(value); + if (selected.get() && !istrue) + selectedPictures.add(this); + else if (istrue && !selected.get()) + selectedPictures.remove(this); + System.out.println(selectedPictures.size()); + tipsController.setSelectedCount(selectedPictures.size()); + } + + public static void clearSelected() { + for (ImageLabel pNode : selectedPictures) { + pNode.selected.set(false); + } + selectedPictures.removeAll(selectedPictures); } + + public void addPictureNodeListener() { + selected.addListener(new InvalidationListener() { + @Override + public void invalidated(Observable observable) { + if(selected.get()) { + imageLabel.setStyle("-fx-background-color:#a7a7a7;"); + }else { + imageLabel.setStyle("-fx-background-color:transparent;"); + } + } + }); + this.setOnMouseEntered((MouseEvent e) -> { + if (!selected.get()) + this.setStyle("-fx-background-color:linear-gradient(to bottom,#3e4147 1%, #a7a7a7 98%);"); + + }); + this.setOnMouseExited((MouseEvent e) -> { + if (!selected.get()) + this.setStyle("-fx-background-color:transparent;"); + + }); + this.addEventHandler(MouseEvent.MOUSE_CLICKED, new MouseEvenHandler(this)); + } + + public static ArrayList getSelectedPictures() {return selectedPictures;} + + public static ArrayList getCutedPictures() {return cutedPictures;} + + public ImageView getImageView (){ + return (ImageView) this.getGraphic(); + } + + public static ArrayList getSelectedPictureFiles() { + return selectedPictureFiles; + } + + public File getImageFile() { + return this.imageFileProperty.get(); + } + } diff --git a/src/main/java/design/pojo/MouseEvenHandler.java b/src/main/java/design/pojo/MouseEvenHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..7bb29446953e6f97633935a9986c65d79c6918ba --- /dev/null +++ b/src/main/java/design/pojo/MouseEvenHandler.java @@ -0,0 +1,27 @@ +package design.pojo; + +import javafx.event.EventHandler; +import javafx.scene.Node; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; + +public class MouseEvenHandler implements EventHandler { + Node node; + public MouseEvenHandler(Node node){ + this.node = node; + } + + @Override + public void handle(MouseEvent mouseEvent) { + if(node instanceof ImageLabel) { + if(mouseEvent.isControlDown() == false) {//Control没有按下 + if(mouseEvent.getButton()!= MouseButton.SECONDARY || !((ImageLabel)node).selected.getValue()) + ImageLabel.clearSelected(); + ((ImageLabel)node).setSelected(true); + } + if(mouseEvent.isControlDown() && mouseEvent.getButton() == MouseButton.PRIMARY) {//Control按下 + ((ImageLabel) node).setSelected( !((ImageLabel)node).selected.get() ); + } + } + } +}