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

门户网站建设提案如何入驻亚马逊跨境电商

门户网站建设提案,如何入驻亚马逊跨境电商,如何在微信内做网站,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.zqtcl.cn/news/81744/

相关文章:

  • 做单页网站需要做什么的做网站都有那些步骤
  • 网站开发技术方案建设网站要钱么
  • 免费设立网站说说刷赞网站推广
  • 企业加盟网站建设成都工装设计公司
  • 用php做图书管理网站小程序游戏搭建
  • 成都中小企业网站建设哪家公司好湘潭网站建设口碑好磐石网络
  • 做pc端网站必知泰安网站建设论文结论
  • 如何免费建com的网站wordpress 主机服务主题
  • 如何查询一个网站的注册信息两个彩票网站做赔付
  • 企业网站内页设计模板织梦网站备份几种方法
  • 专门做狗猫配套网站有什么意思wordpress建站详解
  • 空间中国网站中山建网站推荐
  • 电脑网站打不开什么原因青岛黄岛网站建设公司电话
  • 宝宝个人网站模板东莞网上推广平台
  • 学校网站建设管理采招网是怎样做的网站
  • 长春长春网站建设网烟台高端网站制作公司
  • 深圳福田区住房和建设局网站注册网站是什么意思
  • 国外设计师个人网站网站实时K线怎么做
  • 做好网站 怎么要版权合肥瑶海区封控
  • 网站优化 北京个人主页展示店铺
  • 龙岩网站建设的软件wordpress改变邮箱
  • 网站开发进度安排文档在哪个网站上做苗木生意好些
  • 济宁网站建设是什么重庆建设工程信息网官网安全监督信息
  • 如何修改用织梦做的网站的模板app 网站运营ppt
  • 广州做一个网站多少钱html5企业网站
  • 普象工业设计网站公众号免费推广平台
  • c 网站开发 vs2012用asp.net做网站
  • 宁波做网站哪里专业怎么用云虚拟主机建设网站
  • 南京做网站优化的企业排名手机如何制作一个网站
  • mvc做门户网站企业信用查询官网