当前位置: 首页>>代码示例>>Java>>正文


Java TreeItemPropertyValueFactory类代码示例

本文整理汇总了Java中javafx.scene.control.cell.TreeItemPropertyValueFactory的典型用法代码示例。如果您正苦于以下问题:Java TreeItemPropertyValueFactory类的具体用法?Java TreeItemPropertyValueFactory怎么用?Java TreeItemPropertyValueFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


TreeItemPropertyValueFactory类属于javafx.scene.control.cell包,在下文中一共展示了TreeItemPropertyValueFactory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: initializeTable

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Initializes the {@link TreeTableView} which displays the {@link Tree} {@link Aggregation}.
 */
@Override
protected void initializeTable()
{
    methodColumn.setCellFactory(column -> new MethodNameTreeTableCell<>(appCtx()));
    methodColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("key"));

    percentColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("totalCntPct"));
    percentColumn.setCellFactory(param -> new GraphicalShareTreeTableCell());

    // The column configuration methods should (for now) be called in the same order as the columns are declared in
    // the FXML.
    // The only reason is the column view context menu, which collects its menu items in the order of these
    // declarations. If the order is out of sync, the column view context menu will not have its items in the
    // correct order.
    // This will probably, eventually, be remedied by reordering but for now this comment will have to do.
    cfgPctCol(selfCntPct, "selfCntPct", prfCtx(), COLUMN_SELF_CNT_PCT);
    cfgPctCol(totalCntPct, "totalCntPct", prfCtx(), COLUMN_TOTAL_CNT_PCT);
    cfgNrCol(selfCnt, "selfCnt", prfCtx(), COLUMN_SELF_CNT);
    cfgNrCol(totalCnt, "totalCnt", prfCtx(), COLUMN_TOTAL_CNT);
    cfgPctCol(selfTimePct, "selfTimePct", prfCtx(), COLUMN_SELF_TIME_PCT);
    cfgPctCol(totalTimePct, "totalTimePct", prfCtx(), COLUMN_TOTAL_TIME_PCT);
    cfgTimeCol(selfTime, "selfTime", prfCtx(), COLUMN_SELF_TIME);
    cfgTimeCol(totalTime, "totalTime", prfCtx(), COLUMN_TOTAL_TIME);
}
 
开发者ID:jvm-profiling-tools,项目名称:honest-profiler,代码行数:28,代码来源:TreeViewController.java

示例2: addColumnString

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
protected void addColumnString (String heading, int width, Justification justification,
    String propertyName)
{
  TreeTableColumn<T, String> column = new TreeTableColumn<> (heading);
  column.setPrefWidth (width);
  column
      .setCellValueFactory (new TreeItemPropertyValueFactory<T, String> (propertyName));
  getColumns ().add (column);

  if (justification == Justification.CENTER)
    column.setStyle ("-fx-alignment: CENTER;");
}
 
开发者ID:xframium,项目名称:xframium-java,代码行数:13,代码来源:DefaultTreeTable.java

示例3: addColumnNumber

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
protected void addColumnNumber (String heading, int width, String propertyName)
{
  TreeTableColumn<T, Number> column = new TreeTableColumn<> (heading);
  column.setPrefWidth (width);
  column
      .setCellValueFactory (new TreeItemPropertyValueFactory<T, Number> (propertyName));
  getColumns ().add (column);
  column.setStyle ("-fx-alignment: CENTER-RIGHT;");
}
 
开发者ID:xframium,项目名称:xframium-java,代码行数:10,代码来源:DefaultTreeTable.java

示例4: setupStage

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
@Override
protected void setupStage(Stage stage) {
	stage.getIcons().addAll(PlatformHelper.stageIcons(Images.IMPORT32, Images.IMPORT16));
	stage.setTitle(CertImportI18N.formatSTR_STAGE_TITLE());
	this.ctlFileSourceInput.disableProperty().bind(Bindings.not(this.ctlFileSourceOption.selectedProperty()));
	this.cmdChooseFileSourceButton.disableProperty()
			.bind(Bindings.not(this.ctlFileSourceOption.selectedProperty()));
	this.ctlDirectorySourceInput.disableProperty()
			.bind(Bindings.not(this.ctlDirectorySourceOption.selectedProperty()));
	this.cmdChooseDirectorySourceButton.disableProperty()
			.bind(Bindings.not(this.ctlDirectorySourceOption.selectedProperty()));
	this.ctlURLSourceInput.disableProperty().bind(Bindings.not(this.ctlURLSourceOption.selectedProperty()));
	this.ctlServerSourceInput.disableProperty().bind(Bindings.not(this.ctlServerSourceOption.selectedProperty()));
	this.ctlServerSourceProtocolInput.disableProperty()
			.bind(Bindings.not(this.ctlServerSourceOption.selectedProperty()));
	this.ctlServerSourceProtocolInput.getItems().addAll(SSLPeer.Protocol.values());
	this.ctlPlatformSourceInput.disableProperty()
			.bind(Bindings.not(this.ctlPlatformSourceOption.selectedProperty()));
	setupPlatformSourceInput();
	this.ctlImportEntryViewSelected
			.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(this.ctlImportEntryViewSelected));
	this.ctlImportEntryViewSelected.setCellValueFactory(new TreeItemPropertyValueFactory<>("selected"));
	this.ctlImportEntryViewDN.setCellValueFactory(new TreeItemPropertyValueFactory<>("name"));
	this.ctlImportEntryViewCRT.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(this.ctlImportEntryViewCRT));
	this.ctlImportEntryViewCRT.setCellValueFactory(new TreeItemPropertyValueFactory<>("hasCRT"));
	this.ctlImportEntryViewKey.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(this.ctlImportEntryViewKey));
	this.ctlImportEntryViewKey.setCellValueFactory(new TreeItemPropertyValueFactory<>("hasKey"));
	this.ctlImportEntryViewCSR.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(this.ctlImportEntryViewCSR));
	this.ctlImportEntryViewCSR.setCellValueFactory(new TreeItemPropertyValueFactory<>("hasCSR"));
	this.ctlImportEntryViewCRL.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(this.ctlImportEntryViewCRL));
	this.ctlImportEntryViewCRL.setCellValueFactory(new TreeItemPropertyValueFactory<>("hasCRL"));
	this.ctlImportEntryView.setTreeColumn(this.ctlImportEntryViewDN);
	this.ctlFileSourceOption.setSelected(true);
	this.ctlServerSourceProtocolInput.setValue(SSLPeer.Protocol.SSL);
}
 
开发者ID:hdecarne,项目名称:certmgr,代码行数:36,代码来源:CertImportController.java

示例5: buildSimpleLongValueColumn

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
private static TreeTableColumn<TorrentFileEntry, Long> buildSimpleLongValueColumn(
		final String columnName, final String propertyName, final String style, final Insets padding,
		final Function<TorrentFileEntry, String> valueGetter) {
	final TreeTableColumn<TorrentFileEntry, Long> longValueColumn = new TreeTableColumn<TorrentFileEntry, Long>(columnName);
	longValueColumn.setId(columnName);
	longValueColumn.setGraphic(TableUtils.buildColumnHeader(longValueColumn, style));
	longValueColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>(propertyName));
	longValueColumn.setCellFactory(column -> new TreeTableCell<TorrentFileEntry, Long>() {
		final Label valueLabel = new Label();			
		
		@Override
		protected final void updateItem(final Long value, final boolean empty) {
			super.updateItem(value, empty);
			if(empty) {
				setText(null);
				setGraphic(null);
			}
			else {
				final TorrentFileEntry fileContent = this.getTreeTableRow().getItem();
				
				if(fileContent == null) {
					return;
				}
				
				final String formattedValue = valueGetter.apply(fileContent);					
				valueLabel.setText(formattedValue);
                this.setGraphic(valueLabel);
                this.setAlignment(Pos.CENTER_RIGHT);
                super.setPadding(padding);
			}
		}			
	});
	return longValueColumn;
}
 
开发者ID:veroslav,项目名称:jfx-torrent,代码行数:35,代码来源:TreeTableUtils.java

示例6: buildPriorityColumn

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
private static TreeTableColumn<TorrentFileEntry, FilePriority> buildPriorityColumn() {
	final TreeTableColumn<TorrentFileEntry, FilePriority> priorityColumn =
			new TreeTableColumn<>(PRIORITY_COLUMN_NAME);
	priorityColumn.setId(PRIORITY_COLUMN_NAME);
	priorityColumn.setGraphic(TableUtils.buildColumnHeader(priorityColumn, GuiUtils.LEFT_ALIGNED_COLUMN_HEADER_TYPE_NAME));
	priorityColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("priority"));
	priorityColumn.setCellFactory(column -> new TreeTableCell<TorrentFileEntry, FilePriority>() {
		final Label valueLabel = new Label();			
		@Override
		protected final void updateItem(final FilePriority value, final boolean empty) {
			super.updateItem(value, empty);
			if(empty) {
				setText(null);
				setGraphic(null);
			}
			else {
				final TorrentFileEntry fileContent = this.getTreeTableRow().getItem();
				
				if(fileContent == null) {
					return;
				}

				valueLabel.setText(fileContent.getPriority().toString());
                this.setGraphic(valueLabel);
                this.setAlignment(Pos.BASELINE_LEFT);
                super.setPadding(GuiUtils.leftPadding());
			}
		}		
	});
	return priorityColumn;
}
 
开发者ID:veroslav,项目名称:jfx-torrent,代码行数:32,代码来源:TreeTableUtils.java

示例7: buildPathColumn

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
private static TreeTableColumn<TorrentFileEntry, String> buildPathColumn() {
	final TreeTableColumn<TorrentFileEntry, String> pathColumn =
			new TreeTableColumn<TorrentFileEntry, String>(PATH_COLUMN_NAME);
	pathColumn.setId(PATH_COLUMN_NAME);		
	pathColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("path"));
	pathColumn.setGraphic(TableUtils.buildColumnHeader(pathColumn, GuiUtils.LEFT_ALIGNED_COLUMN_HEADER_TYPE_NAME));		
	
	return pathColumn;
}
 
开发者ID:veroslav,项目名称:jfx-torrent,代码行数:10,代码来源:TreeTableUtils.java

示例8: buildProgressColumn

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
private static TreeTableColumn<TorrentFileEntry, Double> buildProgressColumn(
		final TreeTableView<TorrentFileEntry> treeTableView) {
	final TreeTableColumn<TorrentFileEntry, Double> progressColumn = 
			new TreeTableColumn<TorrentFileEntry, Double>(PROGRESS_COLUMN_NAME);
	progressColumn.setId(PROGRESS_COLUMN_NAME);
	progressColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("progress"));
	progressColumn.setGraphic(TableUtils.buildColumnHeader(progressColumn, GuiUtils.LEFT_ALIGNED_COLUMN_HEADER_TYPE_NAME));
	progressColumn.setCellFactory(column -> new ProgressBarTreeTableCell<TorrentFileEntry>() {			
		@Override
		public final void updateItem(final Double value, final boolean empty) {
			super.updateItem(value, empty);
			if(empty) {
				super.setText(null);
				super.setGraphic(null);
			}
			else {
				final TorrentFileEntry fileContent = this.getTreeTableRow().getItem();
				
				if(fileContent == null) {
					return;
				}
				
				super.addEventFilter(MouseEvent.MOUSE_CLICKED, evt ->
					treeTableView.getSelectionModel().select(super.getTreeTableRow().getIndex()));
				
				super.getStyleClass().add(CssProperties.PROGRESSBAR_STOPPED);
				super.setItem(fileContent.progressProperty().doubleValue());
				super.setPadding(GuiUtils.noPadding());
			}
		}		
	});	
	
	return progressColumn;
}
 
开发者ID:veroslav,项目名称:jfx-torrent,代码行数:35,代码来源:TreeTableUtils.java

示例9: createTable

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Creates Tree Table View.
 */
private void createTable() {

    TreeItem<ProjectSetting> root = new TreeItem<>(new ProjectSetting());
    TreeItem<ProjectSetting> treeItem;

    for (ProjectSetting projectSettingItem : setting) {
        treeItem = new TreeItem<>(projectSettingItem);
        root.getChildren().add(treeItem);
    }


    treeTable.setRoot(root);
    root.setExpanded(true);
    treeTable.setShowRoot(false);

    TreeTableColumn<ProjectSetting, String> columnProject = new TreeTableColumn<ProjectSetting, String>("ProjectName");
    columnProject.setCellValueFactory(new TreeItemPropertyValueFactory<ProjectSetting, String>("name"));

    TreeTableColumn<ProjectSetting, String> columnNode = new TreeTableColumn<ProjectSetting, String>("Node");
    columnNode.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<ProjectSetting, String>, ObservableValue<String>>() {
        @Override
        public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<ProjectSetting, String> param) {
            return new SimpleStringProperty(param.getValue().getValue().getNode().get(0).getName());
        }
    });

    TreeTableColumn<ProjectSetting, String> columnPath = new TreeTableColumn<ProjectSetting, String>("Path");
    columnPath.setCellValueFactory(new TreeItemPropertyValueFactory<ProjectSetting, String>("path"));


    treeTable.getColumns().addAll(columnProject, columnNode, columnPath);
    treeTable.setColumnResizePolicy(TreeTableView.CONSTRAINED_RESIZE_POLICY);
}
 
开发者ID:informatik-mannheim,项目名称:Moduro-Toolbox,代码行数:37,代码来源:SettingController.java

示例10: initialize

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
@FXML
void initialize() {
    try {
        TableTool.setVisible(this.planeTable, this.getClass() + "#" + "planeTable");

        this.areaTable.setShowRoot(false);
        this.airBase.setCellValueFactory(new TreeItemPropertyValueFactory<>("name"));
        this.actionKind.setCellValueFactory(new TreeItemPropertyValueFactory<>("actionKind"));
        this.seiku.setCellValueFactory(new TreeItemPropertyValueFactory<>("seiku"));
        this.distance.setCellValueFactory(new TreeItemPropertyValueFactory<>("distance"));

        this.slot.setCellValueFactory(new PropertyValueFactory<>("slot"));
        this.slot.setCellFactory(p -> new ItemImageCell());
        this.count.setCellValueFactory(new PropertyValueFactory<>("count"));
        this.count.setCellFactory(p -> new CountImageCell());
        this.maxCount.setCellValueFactory(new PropertyValueFactory<>("maxCount"));
        this.cond.setCellValueFactory(new PropertyValueFactory<>("cond"));
        this.cond.setCellFactory(p -> new CondImageCell());

        SortedList<Plane> sortedList2 = new SortedList<>(this.planes);
        this.planeTable.setItems(this.planes);
        sortedList2.comparatorProperty().bind(this.planeTable.comparatorProperty());
        this.planeTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        this.planeTable.setOnKeyPressed(TableTool::defaultOnKeyPressedHandler);

        this.areaTable.getSelectionModel()
                .selectedItemProperty()
                .addListener(this::plane);

        this.timeline = new Timeline();
        this.timeline.setCycleCount(Timeline.INDEFINITE);
        this.timeline.getKeyFrames().add(new KeyFrame(
                javafx.util.Duration.seconds(1),
                this::update));
        this.timeline.play();

        this.setAirBase();
    } catch (Exception e) {
        LoggerHolder.get().error("FXMLの初期化に失敗しました", e);
    }
}
 
开发者ID:sanaehirotaka,项目名称:logbook-kai,代码行数:42,代码来源:AirBaseController.java

示例11: initialize

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
@FXML
void initialize() {
    TableTool.setVisible(this.detail, this.getClass() + "#" + "detail");
    TableTool.setVisible(this.aggregate, this.getClass() + "#" + "aggregate");

    // 集計
    this.collect.setShowRoot(false);
    this.collect.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    this.unit.setCellValueFactory(new TreeItemPropertyValueFactory<>("unit"));
    this.successGood.setCellValueFactory(new TreeItemPropertyValueFactory<>("successGood"));
    this.success.setCellValueFactory(new TreeItemPropertyValueFactory<>("success"));
    this.fail.setCellValueFactory(new TreeItemPropertyValueFactory<>("fail"));

    // 詳細
    SortedList<MissionLogDetail> sortedList = new SortedList<>(this.details);
    this.detail.setItems(this.details);
    sortedList.comparatorProperty().bind(this.detail.comparatorProperty());
    this.detail.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    this.detail.setOnKeyPressed(TableTool::defaultOnKeyPressedHandler);

    this.date.setCellValueFactory(new PropertyValueFactory<>("date"));
    this.name.setCellValueFactory(new PropertyValueFactory<>("name"));
    this.result.setCellValueFactory(new PropertyValueFactory<>("result"));
    this.fuel.setCellValueFactory(new PropertyValueFactory<>("fuel"));
    this.ammo.setCellValueFactory(new PropertyValueFactory<>("ammo"));
    this.metal.setCellValueFactory(new PropertyValueFactory<>("metal"));
    this.bauxite.setCellValueFactory(new PropertyValueFactory<>("bauxite"));
    this.item1name.setCellValueFactory(new PropertyValueFactory<>("item1name"));
    this.item1count.setCellValueFactory(new PropertyValueFactory<>("item1count"));
    this.item2name.setCellValueFactory(new PropertyValueFactory<>("item2name"));
    this.item2count.setCellValueFactory(new PropertyValueFactory<>("item2count"));

    // 集計
    SortedList<MissionAggregate> sortedList2 = new SortedList<>(this.aggregates);
    this.aggregate.setItems(this.aggregates);
    sortedList2.comparatorProperty().bind(this.aggregate.comparatorProperty());
    this.aggregate.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    this.aggregate.setOnKeyPressed(TableTool::defaultOnKeyPressedHandler);
    this.resource.setCellValueFactory(new PropertyValueFactory<>("resource"));
    this.count.setCellValueFactory(new PropertyValueFactory<>("count"));
    this.average.setCellValueFactory(new PropertyValueFactory<>("average"));

    this.readLog();
    this.setCollect();

    // 選択された時のリスナーを設定
    this.collect.getSelectionModel()
            .selectedItemProperty()
            .addListener(this::detail);
    this.aggregate.getSelectionModel()
            .selectedItemProperty()
            .addListener(this::chart);
}
 
开发者ID:sanaehirotaka,项目名称:logbook-kai,代码行数:54,代码来源:MissionLogController.java

示例12: cfgPctCol

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Configures a {@link TreeTableColumn} containing percentages calculated for a single profile.
 * <p>
 *
 * @param <U> the type of the items in the {@link TableView} containing the {@link TableColumn}
 * @param column the column being configured
 * @param propertyName the name of the property containing the value for this column
 * @param profileContext the {@link ProfileContext} for the profile whose data is shown
 * @param title the column title
 */
protected <U> void cfgPctCol(TreeTableColumn<U, Number> column, String propertyName,
    ProfileContext profileContext, String title)
{
    column.setCellValueFactory(new TreeItemPropertyValueFactory<>(propertyName));
    column.setCellFactory(col -> new PercentageTreeTableCell<>(null));
    configureHeader(column, title, profileContext);
    addColumnMenuItem(column, title, profileContext);
}
 
开发者ID:jvm-profiling-tools,项目名称:honest-profiler,代码行数:19,代码来源:AbstractViewController.java

示例13: cfgPctDiffCol

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Configures a {@link TreeTableColumn} containing the percentage difference comparing two profiles.
 * <p>
 *
 * @param <U> the type of the items in the {@link TableView} containing the {@link TableColumn}
 * @param column the column being configured
 * @param propertyName the name of the property containing the value for this column
 * @param title the column title
 */
protected <U> void cfgPctDiffCol(TreeTableColumn<U, Number> column, String propertyName,
    String title)
{
    column.setCellValueFactory(new TreeItemPropertyValueFactory<>(propertyName));
    column.setCellFactory(col -> new PercentageTreeTableCell<>(doubleDiffStyler));
    configureHeader(column, title, null);
    addColumnMenuItem(column, title, null);
}
 
开发者ID:jvm-profiling-tools,项目名称:honest-profiler,代码行数:18,代码来源:AbstractViewController.java

示例14: cfgNrCol

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Configures a {@link TreeTableColumn} containing numbers calculated for a single profile.
 * <p>
 *
 * @param <U> the type of the items in the {@link TableView} containing the {@link TableColumn}
 * @param column the column being configured
 * @param propertyName the name of the property containing the value for this column
 * @param profileContext the {@link ProfileContext} for the profile whose data is shown
 * @param title the column title
 */
protected <U> void cfgNrCol(TreeTableColumn<U, Number> column, String propertyName,
    ProfileContext profileContext, String title)
{
    column.setCellValueFactory(new TreeItemPropertyValueFactory<>(propertyName));
    column.setCellFactory(col -> new CountTreeTableCell<>(null));
    configureHeader(column, title, profileContext);
    addColumnMenuItem(column, title, profileContext);
}
 
开发者ID:jvm-profiling-tools,项目名称:honest-profiler,代码行数:19,代码来源:AbstractViewController.java

示例15: cfgNrDiffCol

import javafx.scene.control.cell.TreeItemPropertyValueFactory; //导入依赖的package包/类
/**
 * Configures a {@link TreeTableColumn} containing the number difference comparing two profiles.
 * <p>
 *
 * @param <U> the type of the items in the {@link TableView} containing the {@link TableColumn}
 * @param column the column being configured
 * @param propertyName the name of the property containing the value for this column
 * @param title the column title
 */
protected <U> void cfgNrDiffCol(TreeTableColumn<U, Number> column, String propertyName,
    String title)
{
    column.setCellValueFactory(new TreeItemPropertyValueFactory<>(propertyName));
    column.setCellFactory(col -> new CountTreeTableCell<>(intDiffStyler));
    configureHeader(column, title, null);
    addColumnMenuItem(column, title, null);
}
 
开发者ID:jvm-profiling-tools,项目名称:honest-profiler,代码行数:18,代码来源:AbstractViewController.java


注:本文中的javafx.scene.control.cell.TreeItemPropertyValueFactory类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。