Tag: tableview

TableView和ListView的删除方式如何工作?

正如我所看到的,我们必须重写equals和hashCode方法,以从java Collection的java.util.List或类似的其他方法中删除Custom类的对象。 但我想知道TableView和ListView的remove是如何工作的? 最近我成功地从TableView的ObservableList删除了一个自定义类(Person)的对象(在查看ObservableList的remove方法之后,我意识到它inheritance了java.util.List的remove(Object)方法) 然后如何通过调用删除TableView的行。 table.getItems().remove(row.getItem()) row包含Person类的对象数据,Person类没有覆盖equals(object); 和hashCode(); 方法 这是关于这种混乱的完整代码。 public class RowMenu implements Callback<TableView, TableRow> { @Override public TableRow call(TableView table){ final TableRow row = new TableRow(); final ContextMenu contextMenu = new ContextMenu(); final MenuItem removeMenuItem = new MenuItem(“Remove”); removeMenuItem.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { System.out.println(row.getItem()); System.out.println(table.getItems().remove(row.getItem())); } }); contextMenu.getItems().addAll(removeMenuItem); row.setContextMenu(contextMenu); […]

表格单元格在我的tableview中是空的。 JavaFX + Scenebuilder

我正在尝试让表格单元格在我创建新行时显示字符串。 但是所有的行都是空的。 谁知道我做错了什么? 这是主要的类:包应用程序; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Cursor; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource(“/fxml/BasketCase_GUI_0.3.fxml”)); Scene scene = new Scene(root,1110,740); scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm()); primaryStage.setResizable(false); primaryStage.setScene(scene); primaryStage.setTitle(“Basket Case_Beta”); primaryStage.show(); scene.setCursor(Cursor.DEFAULT); } public static void main(String[] args) throws Exception { launch(args); […]

使JavaFX TableView行无法选择和NoFocusTraversable

我试图使JavaFX行无法选择, NoFocusTraversable但我没有运气这样做。 下面是您可以用来玩它的另一个问题的代码。 我添加了两个自定义行,使某些行no focus traversable 。 虽然我不能让某些行无法unselectable ,但任何想法? 您需要下载TomasMikula / EasyBind库(或注释上面的行并取消注释RowFactory ) 代码来自( JavaFX:如何禁用TableView中的行? )StackOverflow答案: import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.function.Function; import javafx.application.Application; import javafx.beans.binding.Bindings; import javafx.beans.property.IntegerProperty; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ContentDisplay; import javafx.scene.control.TableCell; import […]

如何在TableView中获取特定点的行号?

我在JavaFX中创建TableView 。 我想在鼠标右键单击显示Context Menu 。 所以我按照下面给出的那样做。 EventHandler event = new EventHandler() { @Override public void handle(MouseEvent me) { if (me.getButton() == MouseButton.SECONDARY) { tableView.getContextMenu().show(tableView, me.getSceneX(), me.getSceneY()); } } }; tableView.addEventHandler(MouseEvent.MOUSE_CLICKED, event); 但我想这样做只有在我点击TableView任何行时,才能看到Context Menu 。 即如何在TableView中获取特定点的行号,这样我的Context Menu应该只有可见,如果我点击TableView任何一行。

如何从列表视图中选择多个项目 – JavaFX 8

我是使用JavaFX新手,我正在尝试将ObservableList添加到表视图中。 该列表仅包含String。 我的目标是显示已连接设备的列表,并让用户选择执行操作(1或更多),有没有更好的方法来实现这一目标? 编辑:我已经链接到ListView,现在它显示列表,如何从所选项目创建新列表?

使用HashMap填充TableView,HashMap将在HashMap更改时更新

我关注过这篇文章 使用tableview绑定hashmap(JavaFX) 并创建了一个由HashMap数据填充的TableView。 TableView通过从map.entrySet()创建一个ObservableList并将该ObservableList移交给TableView的构造函数,从名为map的HashMap接收其数据。 (代码如下) 但是,虽然它是带有SimpleStringProperty的ObservableList ,但是当对底层HashMap进行更改时,TableView不会更新。 这是我的代码: public class MapTableView extends Application { @Override public void start(Stage stage) throws Exception { try { // sample data Map map = new HashMap(); map.put(“one”, “One”); map.put(“two”, “Two”); map.put(“three”, “Three”); // use fully detailed type for Map.Entry TableColumn<Map.Entry, String> column1 = new TableColumn(“Key”); column1.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Map.Entry, String>, ObservableValue>() […]

JavaFX – 如何更改所选未聚焦行的TableView颜色?

无论我做什么 – 行的颜色保持不变,并具有灰色。 这些更改仅适用于TableView处于焦点时。 我已经尝试了我在网上找到的其他建议,例如来自另一个线程的解决方案: .table-row-cell:selected { -fx-background-color: red; } 似乎没有任何作用,并且当不在焦点时影响行。

如何在SWT表中始终显示垂直滚动条?

即使表是空的,是否可以始终在SWT表中显示垂直滚动条? 通过始终显示(可能已禁用)垂直滚动条,可以避免在列使用ColumnWeightData进行布局时最后一列被部分隐藏。 我尝试使用table.getVerticalBar().setVisible(true)初始化表或使用table.getVerticalBar().setVisible(true) – 两者都没有成功。 ScrollableComposite有一个方法setAlwaysShowScrollBars 。 我正在寻找的是Table的类似方法。 更新:我认为当表包含足够的数据时可见的滚动条不是Tableinheritance自Scrollable那些滚动条。 我调试了ScrollBar.setVisible(boolean) ,似乎没有在表格布局更新上调用它。 这个观察是否正确? 更新2:这是表格构造的片段。 即使表是空的,也可以看到垂直滚动条,并且即使表数据向下滚动也可以看到列标题。 注意:代码段遗漏了一些细节,因为标签提供程序和一些其他控件排列在同一父组合中。 protected void createMasterPart(final IManagedForm managedForm, Composite parentComposite) { FormToolkit toolkit = managedForm.getToolkit(); Composite contentComposite = toolkit.createComposite(parentComposite, SWT.NONE); contentComposite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); toolkit.paintBordersFor(contentComposite); contentComposite.setLayout(new GridLayout(2, false)); GridData gd; Composite tableComposite = new Composite(contentComposite, SWT.NONE); TableColumnLayout tableColumnLayout = new […]

Javafx选择多行

我试图在javafx中选择多行,但我不想使用键盘(SHIFT)。应该在我点击它之后选择它,当我点击另一列时它也应该被选中。 我在这里检查一些其他的答案,但我找不到简短而方便的东西。有更短的方法吗? @FXML private static Logger logger = Logger.getLogger(MainFrameControl.class); public TableView boxTable; protected final ObservableList boxData = FXCollections.observableArrayList(); Service service = new ServiceImpl(); private Stage mainStage; public MainFrameControl(Stage mainStage) { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(“MainFrame.fxml”)); fxmlLoader.setRoot(this); fxmlLoader.setController(this); this.mainStage = mainStage; Stage stage = new Stage(); try { fxmlLoader.load(); } catch (IOException exception) { throw new […]

JavaFX TableView分页 – 无法创建基于fxml的解决方案

我在我的项目中使用JavaFX(也是Spring,Hibernate等)。 我正在尝试为TableView创建分页。 我找到了许多合理的解决方案,但所有这些都是基于控制器的解决方案。 这个解决方案中最好的。 但在我的情况下 – 我使用多个fxml文件,这些文件是在SceneBuilder中创建的,包含所有巨大的设计选项,并且包含TabPane,对于一个选项卡,我有一个FXML文件和一个控制器。 我有一个基本文件导入其他文件,在我的Main类中我加载它: 在我的statistics.fxml的控制器类中,我正在创建TableView和列: @FXML public TableView statisticsTableView; @FXML public TableColumn objectColumn; @FXML public TableColumn noteColumn; @FXML public TableColumn stageColumn; @FXML public TableColumn dateColumn; @FXML public TableColumn vagonColumn; @FXML public TableColumn repeatColumn; @FXML public TableColumn remarkIdColumn; 以及此解决方案中的所有其他内容。 来自实体的信息被添加到我的表中,一切正常。 但! 当我试图添加分页时,问题就开始了,因为我无法理解我应该如何做到这一点。 我的Main方法如下所示: public class Main extends Application { public static void […]