我需要创建一个组合框,可以有一个按钮在其列表视图的结尾。该列表可以添加或删除项目,当项目数量超过5个时,会显示一个滚动条。此外,当选择一个项目时,该列表视图不会自动关闭。
如何像下面的截图一样添加一个按钮“新项目”?
这是源代码:
helloApplication.java
package com.example.demo;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 320, 240);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
你好控制器.java
package com.example.demo;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.skin.ComboBoxListViewSkin;
import java.net.URL;
import java.util.ResourceBundle;
public class HelloController implements Initializable {
@FXML
private ComboBox<String> frequencyPlanComboBox;
@Override
public void initialize(URL pURL, ResourceBundle pResourceBundle) {
frequencyPlanComboBox.getItems()
.addAll("aaa", "bbb", "ccc");
ComboBoxListViewSkin<String> comboBoxListViewSkin = new ComboBoxListViewSkin<String>(frequencyPlanComboBox);
comboBoxListViewSkin.setHideOnClick(false);
frequencyPlanComboBox.setSkin(comboBoxListViewSkin);
}
}
您好,查看.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.demo.HelloController">
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</padding>
<Label fx:id="welcomeText" />
<ComboBox fx:id="frequencyPlanComboBox" prefWidth="150.0" visibleRowCount="5" />
</VBox>
将空值添加到组合框项列表的末尾,并使用显示该值按钮的自定义列表单元格。
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.control.skin.ComboBoxListViewSkin;
import java.net.URL;
import java.util.ResourceBundle;
public class HelloController implements Initializable {
@FXML
private ComboBox<String> frequencyPlanComboBox;
@Override
public void initialize(URL pURL, ResourceBundle pResourceBundle) {
frequencyPlanComboBox.getItems()
.addAll("aaa", "bbb", "ccc", null);
ComboBoxListViewSkin<String> comboBoxListViewSkin = new ComboBoxListViewSkin<String>(frequencyPlanComboBox);
comboBoxListViewSkin.setHideOnClick(false);
frequencyPlanComboBox.setSkin(comboBoxListViewSkin);
frequencyPlanComboBox.setCellFactory(lv -> new ListCell<>() {
private Button button = new Button("Add New...");
{
button.setOnAction(e -> {
/*
Do something
*/
System.out.println("Button pressed");
});
}
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText("") ;
setGraphic(null);
} else if (item == null) {
setText("");
setGraphic(button);
} else {
setText(item);
setGraphic(null);
}
}
});
}
}
您可能希望尝试设置该单元格的样式,使其看起来未被选中。
问题内容: 我在情节提要中有一个。我知道如何添加和修改单元格,但是由于某些原因,我无法在后面添加任何其他视图或UI元素。 有没有办法在情节提要中执行此操作?如果没有,我该如何以编程方式执行此操作? 问题答案: 在情节提要中,可以通过为UICollectionView选择单选按钮标题“ Section Footer”,然后将UIButton拖到那里来启用它。您还可以覆盖此功能: 如果您是,则可能还需
问题内容: 这是我所拥有的: 如何编写代码以在列表末尾添加节点? 所以如果我有 我怎么去 其实…我什至不确定是否要添加到最后。我认为添加然后排序是有效的吗?不确定。 谢谢! 问题答案:
将数据写入字符串生成器的逻辑,在由于append(“\n”)而迭代最后一条记录之后,将添加一个我不需要的新空行。
问题内容: 我有一个文本区域,其中包含一些文本,我想再次向其中添加一些行(第一行+我要添加的其他行),但是它不起作用。 我现在的操作方式将擦除旧文本并仅显示新行。 问题答案: 代替使用,使用。 将给定的文本追加到文档末尾。如果模型为null或字符串为null或为空,则不执行任何操作。 这会将文字添加到您的末尾。 另一个选择是使用来从中获取文本,然后操作String(添加或删除或更改String),
注意,这个空间只在最末端可见,因为我不想改变布局。我可以使recycerview有一个50dp的边际底部,但我不想这样做。
问题内容: 我需要在的末尾放置空对象。这是我为此目的所做的一个示例: 我期待着一种更高效,更智能的方式来做到这一点。是否有可能在实际列表内交换,以便将空节点放置在末尾,这样我就不需要其他两个列表(nullStrings,结果)和额外的迭代。 更新资料 排序不适用于我的情况。我仅为测试目的而编写的此示例代码。实际上,我有不同类型的对象。同样,排序也会破坏位置。 说我有这个,如果做排序之类的事情可能会