- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我昨天刚了解 JavaFX,现在正在测试图形选项。我在 Oracle 站点 ( http://docs.oracle.com/javafx/2/charts/pie-chart.htm ) 的饼图示例中注意到了这种行为,但我添加了更多数据点和一些悬停效果以使其更加引人注目。
当您将鼠标悬停在图表上时,MouseEvent 并不总是由正确的数据段处理。鼠标光标离饼图的中心越近,这种效果就越明显。据我所知,当靠近边缘时,行为是准确的。
谁能证实这一点?这是一个错误,还是我做错了什么?
尝试移动鼠标,从段的标记边缘开始,向内移动到中心,看看光标下的段是否正确指示。
我在玩这张图表时注意到的其他一些事情 –
编辑:忘记添加代码了!
package piechartsample;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.chart.*;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.effect.Glow;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.shape.StrokeType;
import javafx.scene.Node;
public class PieChartSample extends Application {
private PieChart.Data selectedData;
private Tooltip tooltip;
@Override
public void start(Stage stage) {
ObservableList<PieChart.Data> pieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Grapefruit", 13),
new PieChart.Data("Orange", 25),
new PieChart.Data("Plum", 10),
new PieChart.Data("Pear", 22),
new PieChart.Data("Banana", 10),
new PieChart.Data("Peach", 5),
new PieChart.Data("Apricot", 1),
new PieChart.Data("Pineapple", 20),
new PieChart.Data("Passion Fruit", 100),
new PieChart.Data("Lychee", 5));
final PieChart chart = new PieChart(pieChartData);
chart.setTitle("Fruits Graph");
chart.setLabelLineLength(10);
chart.setLegendSide(Side.LEFT);
final Label caption = new Label("");
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
tooltip = new Tooltip("");
tooltip.setStyle("-fx-font: 14 arial; -fx-font-smoothing-type: lcd;");// -fx-text-fill:black; -fx-background-color: linear-gradient(#e2ecfe, #99bcfd);");
for (final PieChart.Data data : chart.getData()) {
Tooltip.install(data.getNode(),tooltip);
applyMouseEvents(data);
}
BorderPane pane = new BorderPane();
pane.setCenter(chart);
Scene scene = new Scene(pane);
stage.setTitle("Fruits");
stage.setScene(scene);
// scene.getStylesheets().add("piechartsample/Chart.css");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
private void applyMouseEvents(final PieChart.Data data) {
final Node node = data.getNode();
node.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
node.setEffect(new Glow());
String styleString = "-fx-border-color: white; -fx-border-width: 3; -fx-border-style: dashed;";
node.setStyle(styleString);
tooltip.setText(String.valueOf(data.getName() + "\n" + (int)data.getPieValue()) );
}
});
node.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
node.setEffect(null);
node.setStyle("");
}
});
node.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
selectedData = data;
System.out.println("Selected data " + selectedData.toString());
}
});
}
}
最佳答案
PieChart incorrect picking behaviour for MouseEvent
对于您的特定实现,我在使用 JavaFX 2.2 时没有遇到切片区域的拾取问题。
饼图切片区域的选择错误似乎是一个已知问题。问题似乎是 partially fixed对于 JavaFX 2.2 (jdk7u6)。有一个 outstanding issue与此相关的预定用于 JavaFX 3.0。任何人都可以注册访问权限以查看此答案中链接的 jira 问题。
JavaFX 2.2 developer preview可在此处获得。
How do you change the tooltip page-corner in java?
JavaFX css reference guide提供有关工具提示的 css 结构的信息。这表明子结构具有类 .page-corner。要查看 JavaFX 默认里海皮肤如何设置页面角的样式,您可以查看 caspian.css .此答案中的链接指向 2.2 版本。如果需要,您还可以从 jfxrt.jar 中为您的 JavaFX 安装提取 caspian.css。
有了 caspian.css 后,您可以搜索 Tooltip 以查看应用于 .page-corner css 类的特定样式。这是默认的 .page-corner 样式 =>
.page-corner {
-fx-padding: 4.5 4.5 4.5 4.5;
-fx-background-color: linear-gradient( from 0% 0% to 50% 50%, #fcf7b6, #a59c31);
-fx-shape: "M0,0H9L0,9Z";
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 4 , 0.0 , 0 , 0 );
}
要更改默认样式,请使用您对页角的特定定义加载您自己的用户 css 样式表。例如,以下样式类定义会将页面角变成一个发光的绿色吃 bean 人。
.page-corner {
-fx-padding: 10;
-fx-background-color: green;
-fx-shape: "M30,20 h-15 a15,15 0 1,0 15,-15 z";
-fx-effect: dropshadow( three-pass-box , derive(green, 40%), 10, 0.0 , 0 , 0 );
}
Is there any way to change the shape of the pie-label-line, or remove the round endpoint all together?
是的,但这并不完全简单。
pie-label-line 似乎是一个实现的单一路径,其样式如下:
.chart-pie-label-line {
-fx-stroke: #aaaaaa;
-fx-fill: #aaaaaa;
}
要更改路径的形状,您可以在图表显示后查找标签行并编写一些代码从中删除球元素;例如(Path) chart.lookup(".chart-pie-label-line")
或者您可以继承 PieChart 并覆盖 layoutChartChildren
方法。此版本的 PieChart source 中的第 670-6 行是生成标签行的。
The stroke effect (here a white dash) is not consistent on a segment. The left edge often looks clipped
剪裁是因为您将边框应用于饼图切片节点,并且饼图在内部布局,以便添加到图表的后面的项目覆盖前面的项目。当您添加粗边框时,(最后绘制的切片除外)边框将与下一个绘制的饼图切片重叠。您可以通过调用 node.toFront() 来解决这个问题在您的鼠标输入方法中。
然而,笔划还有其他偏移问题,它应该更好地对齐饼图切片。如果笔划宽度设置为 1,它会很好地对齐,如果它设置为更大的数字(如 10),它最终不会对齐。我的猜测是这是边框样式的 css 处理中的一些错误,会鼓励注册一个帐户并记录一个 jira issue。在 JavaFX 问题跟踪器中对此进行了讨论。
将与问题标题无关的其他一些问题作为单独的 stackoverflow 问题发布可能会更好。
关于javafx : PieChart incorrect data handles MouseEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873041/
只是想知道这些结构之间有什么区别(text、data、rodata、bss 等)在链接描述文件中: .data : { *(.data) } .data : { *(.data*) }
Data 定义为其核心功能之一 gfoldl : gfoldl :: (Data a) => (forall d b. Data d => c (d -> b) -> d -> c b)
以下之间有什么区别:data-sly-use、data-sly-resource、data-sly-include 和 数据-sly-模板?我正在阅读 Sightly AEM 上的文档,我非常困惑。
我有一个 Spring Boot、Spring Data JPA (hibernate) Web 应用程序,并且想引入文本搜索功能。 我理解以下内容 hibernate search 或 spring
我不知道我的代码有什么问题。我读了其他有同样问题的人的一些问题,但没有找到答案。当我尝试编译时出现以下错误: ||In function 'main':| |35|error: expected ex
我不太确定为什么会收到此错误或其含义。我的数据框称为“数据”。 library(dplyr) data %>% filter(Info==1, Male==1) %>% lm(CFL_
我一直在 GitHub 等更现代的网站上看到这些属性,它们似乎总是与自定义的弹出窗口一致,如 title 属性。 Option 1 Option 2 Option 3 Option 4 我在 HTML
如何用 iCloud Core Data 替换我现有的 Core Data?这是我的持久商店协调员: lazy var persistentStoreCoordinator: NSPersistent
我一直在 GitHub 等更现代的网站上看到这些属性,它们似乎总是与自定义的弹出窗口一致,如 title 属性。 Option 1 Option 2 Option 3 Option 4 我在 HTML
我正在通过 this project 在 Android 上摆弄 node.js ,我需要一种方法将 js 文件部署到私有(private)目录(以隐藏源代码,防止用户篡改),该目录也物理存在于文件系
大家好我有点沮丧,所以我希望得到一些帮助。我的项目在 SwiftUI 中。我想使用图像选择器将图像保存到 Core Data。我实现了让 ImagePicker 工作,但我正在努力转换 Image -
我有以下数据和代码: mydf grp categ condition value 1 A X P 2 2 B X P 5
我一直在努力解决这个问题,但我根本找不到任何解决问题的方法。希望这里有人可以提供帮助。 我正在尝试为具有以下结构的某些数据创建个人选择矩阵: # A tibble: 2,152 x 32 a
我了解 Data.Map.Lazy 和 Data.Map.Strict 是不同的。但是,当您导入 Data.Map 时,您究竟导入了什么:严格的、惰性的还是两者的组合? 最佳答案 懒人。看着docs
我正在开发一个 C 程序,用于从 BerkeleyDB DBTree 数据库中提取数据值与特定模式匹配的记录。我创建数据库,打开它,将键的 DBT 和数据的另一个 DBT 清零,将 DBT 标志设置为
所以我有以下成员(member)历史表 User_ID | Start date | End Date | Type(0-7) | ---------------------------
随着最近推出的包dataframe ,我认为是时候正确地对各种数据结构进行基准测试,并突出每种数据结构的优势。我不是每个人的不同优势的专家,所以我的问题是,我们应该如何对它们进行基准测试。 我尝试过的
我有来自 API 的数据,但无法将数组中的数据设置为 vue.js 中的 this.data这是来自 API 的数据(JSON) 你能告诉我这个语法吗 {"id":1613, "name_org":"
在 Vue.js到目前为止,我已经找到了两种定义数据的方法:data: {} 和 data() { return; }. data: { defaultLayout: 'default' }
我正在研究Spring Data Rest Services,并在自定义拦截器中遇到一些问题。之前我使用spring-data-rest-webmvc 2.2.0并以以下方式添加了拦截器。 publi
我是一名优秀的程序员,十分优秀!