我有一个controlsfx CheckListView(甚至与javafx ListView 控件相同的问题),我想在其中显示RadioButtons 而不是CheckBox。所以我通过从几个 javafx 教程中获取帮助来实现自定义单元工厂,并且它正在工作。问题是我选择了第一个单选按钮并向下滚动一点,这样我的几个顶部单选按钮将向上滚动并且现在不可见。然后我再次向上滚动,选择现在消失了。
我调试代码时了解到每次都会创建新单元格并导致此问题,但不幸的是无法找出解决方案。
我附上了一个示例代码,它是从堆栈溢出中得到的,它有同样的问题。
package application;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RadioButtonListView extends Application {
public static final ObservableList names = FXCollections.observableArrayList();
private ToggleGroup group = new ToggleGroup();
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("List View Sample");
final ListView listView = new ListView();
listView.setPrefSize(200, 250);
listView.setEditable(true);
names.addAll("Adam", "Alex", "Alfred", "Albert", "Brenda", "Connie", "Derek", "Donny", "Lynne", "Myrtle", "Rose", "Rudolph", …Run Code Online (Sandbox Code Playgroud) @Bean
public AuthenticationEntryPoint unauthorizedEntryPoint() {
return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
Run Code Online (Sandbox Code Playgroud)
如何理解这一点(request, response, authException) ->,它在哪里找到所有这三个变量?没有在类领域。
它是什么 ->?
所以我有一个在 Java 7 上运行良好的程序,但在 Java 8 中它无法编译并出现错误。所以,我解决了 Java 兼容性问题,我想我找到了原因(或者我找到了吗?http://bugs. java.com/bugdatabase/view_bug.do?bug_id=7144506 ) 。我想知道是否有一种简短的有效方法来复制我的原始代码片段在 Java 8 中所做的事情。这是一个表示这种情况的程序。在我的代码中,有一个 setter 方法可以完成填充数组的工作,但我无法控制它的填充方式。
import java.util.List;
import java.util.Arrays;
public class HelloWorld{
public static void main(String []args){
B someObject=new B();
List<A> a = someObject.getA() == null ? Collections.EMPTY_LIST : Arrays.asList(someObject.getA());
for ( A item : a ) {
System.out.println(item.value);
}
}
}
class A{
String value;
public A(String value){
this.value = value;
}
}
class B{
Object[] getA(){
Object arr[]= new Object[4];
arr[0]=new A("hello");
arr[1]=new A("mello");
arr[2]=new …Run Code Online (Sandbox Code Playgroud) 我有一个Stream,生长成倍创建排列。所以每次调用都会addWeeks增加Stream.
Stream<SeasonBuilder> sbStream = sbSet.stream();
for (int i = 1; i <= someCutOff; i++) {
sbStream = sbStream.map(sb -> sb.addWeeks(possibleWeeks))
.flatMap(Collection::stream);
}
// Collect SeasonBuilders into a Set
return sbStream.collect(Collectors.toSet()); // size > 750 000
Run Code Online (Sandbox Code Playgroud)
addWeeks返回 aSet<SeasonBuilder>并将所有内容收集到 a 中Set需要一段时间。addWeeks不是静态的,需要SeasonBuilder在流中的每一个上调用,每次通过循环
public Set<SeasonBuilder> addWeeks(
final Set<Set<ImmutablePair<Integer, Integer>>> possibleWeeks) {
return possibleWeeks.stream()
.filter(containsMatchup()) // Finds the weeks to add
.map(this::addWeek) // Create new …Run Code Online (Sandbox Code Playgroud)假设我有以下课程:
public class Foo {
private int id;
private String name;
public int getId() {
return id;
}
public Foo setId(int id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Foo setName(String name) {
this.name = name;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我有几个Foo对象Collection<Foo> fooCollection和 String Array String[] names。
现在我想fooCollection按属性name排序,与name字符串排序的顺序相同names。
我如何使用 Java 8 Stream 做到这一点?
我正在学习 Oracle 的 Stream API Java 1.8 课程,在阅读讲义时偶然发现了这一点:
无序():
– 继承自 BaseStream
– 返回一个无序的流(内部使用)
– 可以提高distinct()和groupingBy()等操作的效率
这是我的问题。无序的属性如何导致更有效的计算distinct()和groupingBy()
我有一个动画计时器,当我处理结束时,如果某个条件为真,我想向用户显示一个对话框。当我只是尝试在 stop() 方法之后调用对话框时,我遇到了这个异常(仅在移动设备上):
java.lang.IllegalStateException:动画或布局处理期间无法进入嵌套循环
因此,对于这种情况,我解决了将对话框包装在 Platform.runLater() 方法中的问题。
这是处理这种情况的正确方法吗?
如果不是,哪个是正确的?
我正在使用的对话框是胶子对话框:
http://docs.gluonhq.com/charm/javadoc/4.2.0/com/gluonhq/charm/glisten/control/Dialog.html
而在这个简单的表演上是不存在的,只有表演和等待。
我有一个带有默认方法的接口:
public interface Book {
String getTitle();
default String getSentenceForTitle() {
return "This book's title is " + getTitle();
}
}
Run Code Online (Sandbox Code Playgroud)
...我有一个@Entity实现这个接口的JPA :
@Entity
public class JpaBook implements Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
// ...
@Override
public String getTitle() {
return title;
}
}
Run Code Online (Sandbox Code Playgroud)
使用这个实体,我注意到 Jackson 也会序列化默认方法getSentenceForTitle()- 尽管在我的特殊情况下,我不想sentenceForTitle被序列化。
有没有办法让杰克逊知道我不想序列化默认方法,但要保留该方法的行为?我想出的当前解决方法是覆盖默认方法,用 注释它@JsonIgnore,然后委托给默认方法:
@Entity
public class JpaBook implements Book {
// ...
@Override
@JsonIgnore
public String getSentenceForTitle() { …Run Code Online (Sandbox Code Playgroud) final List<Toy> toys = Arrays.asList("new Toy(1)", "new Toy(2)");
final List<Item> itemList = toys.stream()
.map(toy -> {
return Item.from(toy); //Creates Item type
}).collect(Collectors.toList);
Run Code Online (Sandbox Code Playgroud)
上面的代码可以正常工作,并将从玩具列表中生成项目列表。
我想做的是这样的:
final List<Item> itemList = toys.stream()
.map(toy -> {
Item item1 = Item.from(toy);
Item item2 = Item.fromOther(toy);
List<Item> newItems = Arrays.asList(item1, item2);
return newItems;
}).collect(Collectors.toList);
Run Code Online (Sandbox Code Playgroud)
或者
final List<Item> itemList = toys.stream()
.map(toy -> {
return Item item1 = Item.from(toy);
return Item item2 = Item.fromOther(toy); //Two returns don't make sense but just want to illustrate the idea.
}).collect(Collectors.toList); …Run Code Online (Sandbox Code Playgroud) public Double getUnitsBefore(Date recordDate) {
double eligibleUnits = 0;
ageBucket.forEach((dateStr, units) -> {
try {
Date date = DFT.parse(dateStr);
if (date.before(recordDate)) {
//TODO These are eligible units for dividend.
eligibleUnits = eligibleUnits + units.doubleValue(); //TODO
}
} catch(ParseException e) {
e.printStackTrace();
}
});
return eligibleUnits;
}
Run Code Online (Sandbox Code Playgroud)
eligibleUnits = eligibleUnits + units.doubleValue();Java 8 中无法编译。我如何实现这一目标?我只需要在日期在记录日期之前求和。