当前位置: 首页 > news >正文

沙井网站制作wordpress下载页制作

沙井网站制作,wordpress下载页制作,wordpress 头像函数,兰州企业网站排名优化用户控件 自定义控件我已经编写了一个新的自定义控件#xff0c;并将其提交到ControlsFX项目。 这是一个高度专业的控件#xff0c;用于显示后台任务#xff0c;其当前状态和进度的列表。 这实际上是我为ControlsFX编写的第一个控件#xff0c;只是出于乐趣的考虑#xff… 用户控件 自定义控件 我已经编写了一个新的自定义控件并将其提交到ControlsFX项目。 这是一个高度专业的控件用于显示后台任务其当前状态和进度的列表。 这实际上是我为ControlsFX编写的第一个控件只是出于乐趣的考虑这意味着我自己没有用例但是肯定会有一个用例。 下面的屏幕截图显示了正在使用的控件。 如果您已经熟悉javafx.concurrent.Task类您将很快掌握该控件显示其titlemessage和progress属性的值。 但它还会显示一个图标但Task API并未涵盖。 我添加了一个可选的图形工厂回调它将为每个任务调用以查找图形节点该图形节点将放置在代表该任务的列表视图单元格的左侧。 可以在此处找到显示控件正在运行的视频 控制 由于此控件非常简单因此我认为有必要为其发布完整的源代码以便其他人可以学习使用。 下面的清单显示了控件本身的代码。 正如预期的那样它扩展了Control类并为受监视的任务提供了一个可观察的列表为图形工厂回调提供了一个对象属性。 package org.controlsfx.control;import impl.org.controlsfx.skin.TaskProgressViewSkin; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.concurrent.Task; import javafx.concurrent.WorkerStateEvent; import javafx.event.EventHandler; import javafx.scene.Node; import javafx.scene.control.Control; import javafx.scene.control.Skin; import javafx.util.Callback;/*** The task progress view is used to visualize the progress of long running* tasks. These tasks are created via the {link Task} class. This view* manages a list of such tasks and displays each one of them with their* name, progress, and update messages.p* An optional graphic factory can be set to place a graphic in each row.* This allows the user to more easily distinguish between different types* of tasks.** h3Screenshots/h3* The picture below shows the default appearance of the task progress view* control:* centerimg srctask-monitor.png //center** h3Code Sample/h3** pre* TaskProgressViewMyTask view new TaskProgressView();* view.setGraphicFactory(task - return new ImageView(db-access.png));* view.getTasks().add(new MyTask());* /pre*/ public class TaskProgressViewT extends Task? extends Control {/*** Constructs a new task progress view.*/public TaskProgressView() {getStyleClass().add(task-progress-view);EventHandlerWorkerStateEvent taskHandler evt - {if (evt.getEventType().equals(WorkerStateEvent.WORKER_STATE_SUCCEEDED)|| evt.getEventType().equals(WorkerStateEvent.WORKER_STATE_CANCELLED)|| evt.getEventType().equals(WorkerStateEvent.WORKER_STATE_FAILED)) {getTasks().remove(evt.getSource());}};getTasks().addListener(new ListChangeListenerTask?() {Overridepublic void onChanged(Change? extends Task? c) {while (c.next()) {if (c.wasAdded()) {for (Task? task : c.getAddedSubList()) {task.addEventHandler(WorkerStateEvent.ANY,taskHandler);}} else if (c.wasRemoved()) {for (Task? task : c.getAddedSubList()) {task.removeEventHandler(WorkerStateEvent.ANY,taskHandler);}}}}});}Overrideprotected Skin? createDefaultSkin() {return new TaskProgressViewSkin(this);}private final ObservableListT tasks FXCollections.observableArrayList();/*** Returns the list of tasks currently monitored by this view.** return the monitored tasks*/public final ObservableListT getTasks() {return tasks;}private ObjectPropertyCallbackT, Node graphicFactory;/*** Returns the property used to store an optional callback for creating* custom graphics for each task.** return the graphic factory property*/public final ObjectPropertyCallbackT, Node graphicFactoryProperty() {if (graphicFactory null) {graphicFactory new SimpleObjectPropertyCallbackT, Node(this, graphicFactory);}return graphicFactory;}/*** Returns the value of {link #graphicFactoryProperty()}.** return the optional graphic factory*/public final CallbackT, Node getGraphicFactory() {return graphicFactory null ? null : graphicFactory.get();}/*** Sets the value of {link #graphicFactoryProperty()}.** param factory an optional graphic factory*/public final void setGraphicFactory(CallbackT, Node factory) {graphicFactoryProperty().set(factory);}皮肤 如您所料皮肤将使用带有自定义单元工厂的ListView来显示任务。 package impl.org.controlsfx.skin;import javafx.beans.binding.Bindings; import javafx.concurrent.Task; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.ContentDisplay; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.control.ProgressBar; import javafx.scene.control.SkinBase; import javafx.scene.control.Tooltip; import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.util.Callback;import org.controlsfx.control.TaskProgressView;import com.sun.javafx.css.StyleManager;public class TaskProgressViewSkinT extends Task? extendsSkinBaseTaskProgressViewT {static {StyleManager.getInstance().addUserAgentStylesheet(TaskProgressView.class.getResource(taskprogressview.css).toExternalForm()); //$NON-NLS-1$}public TaskProgressViewSkin(TaskProgressViewT monitor) {super(monitor);BorderPane borderPane new BorderPane();borderPane.getStyleClass().add(box);// list viewListViewT listView new ListView();listView.setPrefSize(500, 400);listView.setPlaceholder(new Label(No tasks running));listView.setCellFactory(param - new TaskCell());listView.setFocusTraversable(false);Bindings.bindContent(listView.getItems(), monitor.getTasks());borderPane.setCenter(listView);getChildren().add(listView);}class TaskCell extends ListCellT {private ProgressBar progressBar;private Label titleText;private Label messageText;private Button cancelButton;private T task;private BorderPane borderPane;public TaskCell() {titleText new Label();titleText.getStyleClass().add(task-title);messageText new Label();messageText.getStyleClass().add(task-message);progressBar new ProgressBar();progressBar.setMaxWidth(Double.MAX_VALUE);progressBar.setMaxHeight(8);progressBar.getStyleClass().add(task-progress-bar);cancelButton new Button(Cancel);cancelButton.getStyleClass().add(task-cancel-button);cancelButton.setTooltip(new Tooltip(Cancel Task));cancelButton.setOnAction(evt - {if (task ! null) {task.cancel();}});VBox vbox new VBox();vbox.setSpacing(4);vbox.getChildren().add(titleText);vbox.getChildren().add(progressBar);vbox.getChildren().add(messageText);BorderPane.setAlignment(cancelButton, Pos.CENTER);BorderPane.setMargin(cancelButton, new Insets(0, 0, 0, 4));borderPane new BorderPane();borderPane.setCenter(vbox);borderPane.setRight(cancelButton);setContentDisplay(ContentDisplay.GRAPHIC_ONLY);}Overridepublic void updateIndex(int index) {super.updateIndex(index);/** I have no idea why this is necessary but it wont work without* it. Shouldnt the updateItem method be enough?*/if (index -1) {setGraphic(null);getStyleClass().setAll(task-list-cell-empty);}}Overrideprotected void updateItem(T task, boolean empty) {super.updateItem(task, empty);this.task task;if (empty || task null) {getStyleClass().setAll(task-list-cell-empty);setGraphic(null);} else if (task ! null) {getStyleClass().setAll(task-list-cell);progressBar.progressProperty().bind(task.progressProperty());titleText.textProperty().bind(task.titleProperty());messageText.textProperty().bind(task.messageProperty());cancelButton.disableProperty().bind(Bindings.not(task.runningProperty()));CallbackT, Node factory getSkinnable().getGraphicFactory();if (factory ! null) {Node graphic factory.call(task);if (graphic ! null) {BorderPane.setAlignment(graphic, Pos.CENTER);BorderPane.setMargin(graphic, new Insets(0, 4, 0, 0));borderPane.setLeft(graphic);}} else {/** Really needed. The application might have used a graphic* factory before and then disabled it. In this case the border* pane might still have an old graphic in the left position.*/borderPane.setLeft(null);}setGraphic(borderPane);}}} }CSS 下面的样式表确保我们为任务标题使用粗体字体更小/更细的进度条无圆角并在底部位置列出具有淡入/淡出分隔线的单元格。 .task-progress-view {-fx-background-color: white; }.task-progress-view * .label {-fx-text-fill: gray;-fx-font-size: 18.0;-fx-alignment: center;-fx-padding: 10.0 0.0 5.0 0.0; }.task-progress-view * .list-view {-fx-border-color: transparent;-fx-background-color: transparent; }.task-title {-fx-font-weight: bold; }.task-progress-bar .bar {-fx-padding: 6px;-fx-background-radius: 0;-fx-border-radius: 0; }.task-progress-bar .track {-fx-background-radius: 0; }.task-message { }.task-list-cell {-fx-background-color: transparent;-fx-padding: 4 10 8 10;-fx-border-color: transparent transparent linear-gradient(from 0.0% 0.0% to 100.0% 100.0%, transparent, rgba(0.0,0.0,0.0,0.2), transparent) transparent; }.task-list-cell-empty {-fx-background-color: transparent;-fx-border-color: transparent; }.task-cancel-button {-fx-base: red;-fx-font-size: .75em;-fx-font-weight: bold;-fx-padding: 4px;-fx-border-radius: 0;-fx-background-radius: 0; }翻译自: https://www.javacodegeeks.com/2014/10/new-custom-control-taskprogressview.html用户控件 自定义控件
http://www.yutouwan.com/news/414247/

相关文章:

  • 网站建设SEO优化网络系统分类
  • jsp做的网站怎嘛用北京市住房城乡建设官方网站
  • 前端网站开发工具靖安县城乡规划建设局网站
  • 荣成市建设局网站是什么广东深圳职业技术学院
  • 微信公众号开发网站建设莱芜户型优化培训
  • 株洲网站建设公司成都建站优化公司
  • 长治市建设局网站linux网站服务器配置
  • 外贸公司几个网站做视频网站视频文件都存放在哪
  • 建设网站的视频视频上海网站维护
  • 消防网站建设的风格闵行区怎么读
  • php网站开发工资多少钱百度网站优点
  • 河北网站推广公司招聘58同城找工作
  • 深圳建设工程质量检测中心seo管理系统培训
  • 淘宝客的网站是怎么做的Wordpress分享到微信图标
  • 教育培训类网站建设模板城市建设协会网站
  • 塘沽建设网站公司龙口网站制作
  • 学习php网站建设微信怎么建立小程序
  • 影视网站模板怎么做盐城做网站哪家好
  • 推广优化网站排名网页跳转代码html
  • 快速建设网站方案淘宝网手机网页版
  • 二级学院英语网站建设通知巴中手机网站建设
  • 深圳住建设局网站好的网站具备什么条件
  • 网站seo合同免费小程序开发制作
  • 公司网站改版方案盛世网站集约化建设做法
  • 制作网站如何选择主机网络营销方法和手段
  • 金山专业网站建设wamp下安装wordpress
  • 青岛网站建设信息公示wordpress editor.md
  • 重庆seo整站优化外包服务建设网站了还能消除吗
  • dw制造网站log怎么做做一个网站的流程
  • 遂宁市建设局网站商城网站开发技术有哪些