- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感谢您花时间查看我的帖子。
我已经实现了带有嵌套 TitledPanes 的 ListViewListView 工作得很好 - 但是,当单击 ListView 中的 TitledPane(单击 Pane 而不是标题)时,会引发 NPE。
代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Example extends Application {
@Override
public void start(final Stage primaryStage) throws Exception {
final ExpandableListView<Item> listView = new ExpandableListView<Item>();
listView.setContentProvider(new ExpandableListView.ContentProvider<Item>() {
@Override
public String getTitleOf(final Item item) {
return item.getTitle();
}
@Override
public String getContentOf(final Item item) {
return item.getContent();
}
});
for (int i = 0; i < 100000; i++) {
listView.getItems().add(new Item("title" + i, "content" + i));
}
final BorderPane group = new BorderPane();
group.setCenter(listView);
final Scene scene = new Scene(group);
primaryStage.setScene(scene);
primaryStage.show();
}
public static class Item {
String title;
String content;
public Item(String title, String content) {
this.title = title;
this.content = content;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
}
public static void main(String[] args) {
launch(args);
}
}
import java.util.HashSet;
import java.util.Set;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.TitledPane;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.text.Text;
import javafx.util.Callback;
public class ExpandableListView<E> extends ListView<E> {
private ContentProvider<E> contentProvider=new ContentProvider<E>(){@Override public String getTitleOf(final E item){return item.toString();}
@Override public String getContentOf(final E item){return getTitleOf(item);}};
private final Set<E> expandedItems = new HashSet<E>();
public ExpandableListView() {
setSelectionModel(null);
setCellFactory(new Callback<ListView<E>, ListCell<E>>() {
@Override
public ListCell<E> call(final ListView<E> param) {
final TitledPane titledPane = new TitledPane();
final Text contentArea = new Text();
titledPane.setAnimated(false);
titledPane.setCollapsible(true);
titledPane.setExpanded(false);
final BorderPane contentAreaWrapper = new BorderPane();
contentAreaWrapper.setLeft(contentArea);
titledPane.setContent(contentAreaWrapper);
titledPane.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
final boolean expanded = titledPane.isExpanded();
final E item = (E) titledPane.getUserData();
if (item == null) {
return;
}
if (expanded) {
expandedItems.add(item);
} else {
expandedItems.remove(item);
}
}
});
return new ListCell<E>() {
@Override
protected void updateItem(final E item, final boolean empty) {
super.updateItem(item, empty);
if (empty) {
titledPane.setText("");
contentArea.setText("");
return;
}
final boolean expanded = isExpanded(item);
titledPane.setUserData(item);
titledPane.setExpanded(expanded);
titledPane.setText(contentProvider.getTitleOf(item));
contentArea.setText(contentProvider.getContentOf(item));
setGraphic(titledPane);
}
};
}
});
}
public void setContentProvider(final ContentProvider<E> contentProvider) {
this.contentProvider = contentProvider;
}
public void expand(E item) {
expand(item, true);
}
public void collapse(E item) {
expand(item, false);
}
private void expand(E item, boolean expand) {
if (expand) {
this.expandedItems.add(item);
} else {
this.expandedItems.remove(item);
}
ObservableList<E> o = getItems();
setItems(null);
setItems(o);
}
public boolean isExpanded(E item) {
return this.expandedItems.contains(item);
}
public static interface ContentProvider<E> {
String getTitleOf(E item);
String getContentOf(E item);
}
}
NPE:
java.lang.NullPointerException
at com.sun.javafx.scene.control.behavior.ListViewBehavior.mousePressed(ListViewBehavior.java:366)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:95)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:432)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:410)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$3(WinApplication.java:177)
at java.lang.Thread.run(Unknown Source)
最佳答案
关于java - NPE javafx.scene.control.behavior.ListViewBehavior.mousePressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60471824/
我创建这个是为了当在鼠标的 x 和 y 坐标处按下鼠标时画一条鱼。但我似乎没有调用drawfish 方法。我找不到它不起作用的原因。我将非常感谢任何帮助。 /*FishTank*/ impor
我用 Java 编写了一个简单的实用程序,可以让鼠标单击任意位置,每 X 毫秒一次: import java.awt.Robot; import java.awt.event.InputEvent;
我正在尝试做一些非常基本的事情:编写程序,在两点之间的框架上画一条线:按下鼠标的点和释放鼠标的点。 我有这些类(class): import java.awt.Graphics; public cla
我知道有很多关于 mousePressed 无法正常工作的线程,但我还没有找到问题的答案。我编写了一个程序,只是为了好玩和体验,但是我在使用 Robot 类的 mousePressed 方法时遇到了问
我正在制作有关处理的动画。然后,我有一个关于灯的问题。通常,我的代码比较长。但是,我制作了一个简单的代码,对初学者也很有用。 void setup() { size(400, 400, P3D);
当用户点击它时,我试图获取 JOGL 中像素的颜色。如果我将以下代码放入显示方法中(来自GLEventListener),它就可以正常工作。 FloatBuffer buffer = FloatBuf
所以我有一个标签,我想做下一个,默认情况下它以红色背景颜色开始,当我第一次单击(鼠标按下)时,我将背景颜色更改为绿色。 现在,我希望当我第二次按下它时,一旦我再次按下它,它就会变回红色。 就像是红色的
在 mousePressed 方法中,我无法使用任何与图形相关的方法,例如此代码将运行但不起作用 import org.newdawn.slick.GameContainer; import org.
我正在尝试在按钮 4 上使用鼠标事件。使用 时返回的值 int moused = MouseInfo.getNumberOfButtons(); 方法是5。除了右键单击按钮4之外,我不知道还有什么按钮
我有一小段原型(prototype)代码。 我试图让它在 mousePressed() 或 mouseClicked() 上单击的线条的颜色会改变。 我这辈子都无法弄清楚! 任何帮助将不胜感激! 我到
在下面的代码中,点击标签本应使其隐藏,但该方法从未被调用!我在这里错过了什么? package com.hermaryopto.lib.output.message; import java.
我正在编写一个程序,鼠标监听器 mousePressed() 似乎没有响应。我现在已经编写了一些 GUI 程序,并且比较了这些代码,我没有发现任何显着差异可以解释缺少鼠标监听的原因。以下代码不完整,其
我创建了一个 foreach 循环,它创建 ImageView 并使用 javafx 显示它们,但是找到的每个 ImageView 都必须有一个类似于 mousepressed 事件的事件,我已经编写
import java.awt.Frame; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt
我正在 Mac OSX 上使用 Eclipse 测试一个简单的 java 图形程序,代码如下: public void mousePressed(MouseEvent e) { System.
我已经安装了所有 p5 并且工作正常,但是每当我开始使用 mousePressed() 它就不起作用(keyPressed 也不起作用)。这是有问题的部分: //press play butt
我正在尝试构建一个简单的应用程序,当您在屏幕上按下/单击时它会播放一首歌曲。一旦您按下/单击,涟漪效应就会发生,同时也会产生视觉效果。 每次按下/单击时都会发生涟漪,但在我的代码中(每次单击都会重新启
我正在尝试访问 mousePressed ProcessingJS 片段中的属性,但得到 undefined。 这是我到目前为止尝试过的: $(document).ready(function(
为下面的函数运行println(game.gameOn) 仍然输出false。 为什么会这样模棱两可? 解决方案是什么? 也许我不能将对象作为参数传递给函数 mousePressed() void m
我创建了几个用于显示值的 JLabels(来自 MySQL),它们必须通过 mousePressed 进行切换,但每次单击后所有值都会覆盖其他值。 在显示新值时需要清除以前的文本吗?也许有比 JLab
我是一名优秀的程序员,十分优秀!