JavaFX2的TableView具有“用户在运行时重新排序列”的功能。我想为我的应用程序中的一个特定表禁用此功能。
查看API文档,没有明显的API挂钩。但是,有columns
-property。根据文档,它代表
属于此TableView的TableColumns。当用户重新排序TableView列时,此列表将更新以反映当前的视觉顺序。
希望我至少能够在发生更改后重置更改,所以我尝试添加一个侦听器以在更改之后重置更改。
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class TableTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
TableView tableView = new TableView();
tableView.getColumns().setAll(new TableColumn(), new TableColumn());
tableView.getColumns().addListener(new ListChangeListener() {
@Override
public void onChanged(Change change) {
if (change.wasPermutated()){
change.reset();
}
}
});
stage.setScene(new Scene(tableView));
stage.show();
}
}
但是,IllegalStateException
当我要求时,监听器会以终止wasPermutated
。
有没有办法防止重新排序,或者至少以编程方式还原它?
参见下面的SSCCE,其中显示了侦听器已被调用-
但是added
在移动列时将标志设置为。请注意,您需要先致电next()
才能使用更改,否则会收到IllegalStateException
。有关简单的规范示例,请参见的javadocListChangeListener.Change
。
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class TableTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
final TableView tableView = new TableView();
final TableColumn[] columns = {new TableColumn("1"), new TableColumn("2")};
tableView.getColumns().setAll(columns);
tableView.getColumns().addListener(new ListChangeListener() {
public boolean suspended;
@Override
public void onChanged(Change change) {
change.next();
if (change.wasReplaced() && !suspended) {
this.suspended = true;
tableView.getColumns().setAll(columns);
this.suspended = false;
}
}
});
stage.setScene(new Scene(tableView));
stage.show();
}
}
问题内容: 我需要移动现有列的位置(以获得更好的可见性)。 如何做到这一点而又不影响数据? 问题答案: 修改也可以。看一看:
问题内容: df =DataFrame({‘a’:[1,2,3,4],’b’:[2,4,6,8]}) >>> df[‘x’]=df.a + df.b >>> df[‘y’]=df.a - df.b >>> df a b x y 0 1 2 3 -1 1 2 4 6 -2 2 3 6 9 -3 3 4 8 12 -4 现在,我想重新排列列顺序,按如下方式使“ x”,“ y”列成为第一列和第二列: 但
问题内容: 如果我有列表,如何以任意方式重新排序商品? 编辑:我不想洗牌。我想以预定义的方式对它们进行重新排序。(例如,我知道旧列表中的第3个元素应成为新列表中的第一个元素) 问题答案: 你可以这样
问题内容: 我有一堆具有相同列但顺序不同的csv文件。我们正在尝试使用SQL * Plus上载它们,但是我们需要具有固定列排列的列。 例 所需订单:ABCDEF csv文件:ACDEB(有时列不在csv中,因为它不可用) 用python可以实现吗?我们正在使用Access + Macros来做…但这太浪费时间了 PS。对不起,如果有人对我的英语能力感到沮丧。 问题答案: 您可以使用csv模块读取,
问题内容: 在jquery数据表中,我可以禁用特定的列排序 有人知道如何在有角JS中执行此操作吗? 此代码隐藏了我的搜索栏,但无法隐藏我的第一列和第四列的排序功能? 问题答案: 的角度数据表等价于 是 … 您必须包括在控制器中: 参见 http://l-lin.github.io/angular- datatables/archives/#!/api 。
问题内容: 我最后生成目录,我想在开始时移动目录。假设我的PDF中有16页,并且TOC从第13页开始到第15页结束。我想将TOC移到第二页,以便第一页保留为第1页,最后一页保留为第16页。这段代码没有给我我想要的东西: 请提出一些解决方案。 问题答案: 您的公式是错误的。你有: 但这会将您的目录放在第一页。根据您的描述,这不是您想要的。 您想要这样的东西: 此代码使用测试ReorderPage在1