有没有办法在类似于ScrollPane的TableView中更改ScrollBar的策略?我只看到TableView的VirtualFlow计算可见性,但不存在手动干扰的可能性.
我需要垂直滚动条始终可见,水平从不.更改条形的可见状态不起作用.
例:
import java.time.LocalDate;
import java.time.Month;
import java.util.Set;
import javafx.application.Application;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import com.sun.javafx.scene.control.skin.VirtualFlow;
public class ScrollBarInTableViewDemo extends Application {
private TableView<Data> table1 = new TableView<>(); // table with scrollbars
private TableView<Data> table2 = new TableView<>(); // table without scrollbars
private final ObservableList<Data> data =
FXCollections.observableArrayList(
new Data( LocalDate.of(2015, Month.JANUARY, 10), …Run Code Online (Sandbox Code Playgroud) 我正在尝试在javafx 2+中创建一个计划界面,我无法让TableView包含看起来像连接组件的TableCells.
我尝试的第一件事是使用背景颜色和边框,但是,我不能让顶部和底部之间的边框不同.
-fx-border-width: 1px, 0px, 0px, 0px; 顶部
-fx-border-width: 0px, 0px, 1px, 0px; 为了底部
理想情况下,我可以跨越列或行,但我知道它不适合控件的模型.任何帮助是极大的赞赏.
我需要创建具有多色行的JavaFx TableView(color1用于低优先级,color2用于中等优先级等).我创建了CellFactory
public class TaskCellFactory implements Callback<TableColumn, TableCell> {
@Override
public TableCell call(TableColumn p) {
TableCell cell = new TableCell<Task, Object>() {
@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : getString());
setGraphic(null);
TableRow currentRow = getTableRow();
Task currentTask = currentRow == null ? null : (Task)currentRow.getItem();
if(currentTask != null){
Priority priority = currentTask.getPriority();
clearPriorityStyle();
if(!isHover() && !isSelected() && !isFocused()){
setPriorityStyle(priority);
}
}
}
@Override
public void updateSelected(boolean upd){
super.updateSelected(upd);
System.out.println("is update");
}
private void …Run Code Online (Sandbox Code Playgroud) 我试图在javafx中选择多行,但我不想使用键盘(SHIFT).应该在我点击它之后选择,当我点击其他列时它也应该被选中.
我在这里检查了一些其他的答案,但我找不到简短而方便的东西.有更短的方法吗?
@FXML
private static Logger logger = Logger.getLogger(MainFrameControl.class);
public TableView<Box> boxTable;
protected final ObservableList<Box> 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 RuntimeException(exception);
}
ArrayList<Box> list = service.findAllBoxen();
TableColumn<Box, String> boxnameColumn = (TableColumn<Box, String>) boxTable.getColumns().get(0);
boxnameColumn.setCellValueFactory(new PropertyValueFactory<Box, String>("boxName"));
TableColumn<Box, String> sizeColumn = (TableColumn<Box, String>) boxTable.getColumns().get(1);
sizeColumn.setCellValueFactory(new PropertyValueFactory<Box, …Run Code Online (Sandbox Code Playgroud) 我试图使用titanium更新/更改android中的lebel.但是文本中没有显示该值.但是我在alert中获得了更新的值.但是ios工作正常.
var itemcounttext = Ti.UI.createLabel({
top: 5,
color: "#000000",
left:10,
text:data[i].itemCount,
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
});
var additem = Ti.UI.createImageView({
image: "/images/plus.jpg",
top: 5,
width: Ti.UI.SIZE,
left:10,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(additem);
additem.addEventListener('click', function(e)
{
var item=e.source.getParent();
squantity = e.source.squantity;
squantity = Number(squantity) + 1;
item.children[1].text = squantity;
alert(item.children[1].getText());
Run Code Online (Sandbox Code Playgroud)
这里正在获取具有正确更新值的警报.但它没有显示在标签中.你能给我一个想法来解决android中的这个问题.
编辑:
从VRK评论我也试过了.但它没有工作.但我正确地得到警报.
item.children[1].setText(squantity);
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试用jsplaine回答.但我无法得到解决方案.在这里我创建了tableview.在这个tableview行中我们创建了view.in该视图我已经添加了additem,itemcounttext值.如果我们点击additem意味着需要更改itemcounttext值.这是一个流程.
如下面的截图是我的app tableview的子视图:
productname
remove itemcount add
image text image
Run Code Online (Sandbox Code Playgroud)
这三个图像,文本,图像值都添加到一个视图中.这就是为什么在单击添加图像时添加用于获取父视图的代码:
var item=e.source.getParent();
Run Code Online (Sandbox Code Playgroud)
这里得到了parent.also我写了下面的代码来获取这个视图的标签:
item.children[1].text
Run Code Online (Sandbox Code Playgroud)
如果单击添加图像,则正确地将标签值增加1.使用此代码验证.am alert(item.children[1].getText()); 但是没有显示更新的值.这是我的确切怀疑.
编辑:
这是我的完整源代码.
dataArray = [];
$.ViewCartItemslist_total_value.text = totalamount; …Run Code Online (Sandbox Code Playgroud) 有没有人知道动画有多长
- (void)setEditing:(BOOL)editing animated:(BOOL)animated;
Run Code Online (Sandbox Code Playgroud)
在UITableViewCell拿?我用0.5秒进行测试,但我更喜欢使用Framework中的常量UITableViewCellEditingAnimationDuration
我想自定义TableView节标题并保留默认背景颜色.我用 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)部分.我需要根据设备(iPad或iPhone)更改字体大小.为此,请调用next函数:
[UIColor colorWithHue:0.6饱和度:0.33亮度:0.69 alpha:0.6].
但我手动找到了这些值.
我有一个与TreeView相关联的TableView.每次选择TreeView中的节点时,TableView都会刷新不同的数据.
我能够对TableView中的任何列进行排序,只需按下相应的列标题即可.这很好.
但是:当我在树视图中选择一个不同的节点时,尽管列标题仍然显示为已排序.数据不是.
有没有办法以编程方式强制执行每次数据更改时用户所做的排序顺序?
我有一些困难要改变一些TableView行的外观.该行应显示带有笔划和红色的文本.实际上,我可以用红色显示它,但仍然不能做中风.这是我用来改变行外观的css类:
.itemCancelado {
-fx-strikethrough: true;
-fx-text-fill: red;
}
Run Code Online (Sandbox Code Playgroud)
当用户将项目标记为已取消时,将添加此样式类:
public class ItemCanceladoCellFactory implements Callback<TableColumn, TableCell> {
@Override
public TableCell call(TableColumn tableColumn) {
return new TableCell<ItemBean, Object>() {
@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? "" : getItem().toString());
setGraphic(null);
int indice=getIndex();
ItemBean bean=null;
if(indice<getTableView().getItems().size())
bean = getTableView().getItems().get(indice);
if (bean != null && bean.isCancelado())
getStyleClass().add("itemCancelado");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
此处还有另一个问题,标记为已取消的行仅在用户从可观察列表中添加或删除元素时更改颜色.有没有办法可以强制更新TableView?
我将ItemBean类更改为使用BooleanProperty并且它部分解决了:
public class ItemBean {
...
private BooleanProperty cancelado = new SimpleBooleanProperty(false);
...
public Boolean getCancelado() …Run Code Online (Sandbox Code Playgroud) 我希望我的TableView的高度适应填充的行数,因此它永远不会显示任何空行.换句话说,TableView的高度不应超出最后填充的行.我该怎么做呢?