【发布时间】:2021-06-18 11:01:26
【问题描述】:
我在论坛上看了很多主题,但不知道该怎么做。我真的需要你的帮助
基本上我有 4 个列表视图。
其中 3 个是静态的,在控制器初始化时预加载(其中的值始终相同)。它们包含字符串。 我的目标是单击 3 个不同列表视图中包含的任何项目(在初始化时预加载),并根据不重要的标准以某种颜色出现在第四个列表视图中(例如,我在这里选择了蓝色和红色)在这里。
事实是我的代码确实有效并且确实改变了第四个列表视图的颜色发生(我只想为一个精确的项目设置颜色,而不是为每个项目设置颜色)。 前 2 个名为 listevolview 和 listesolview 的静态列表视图:当您单击这 2 个列表视图中的任何项目时,相同的项目应该出现在名为 listeclairanceview 的第四个列表视图中,以红色显示。 第三个名为 listeexoview 的静态列表视图:当您单击此列表视图时,选定的项目应该以蓝色显示在第四个视图中。
总结新闻条目出现在listefrequenceview(第四个listview)中,颜色很好,但是前面的条目的颜色已经不是很好的颜色了(它们都是相同的颜色:最后一个条目的颜色)加载到第四个列表视图);
我在代码的末尾有我的例子。所以在这里当我点击第一个列表视图时没关系,因为它变成了红色 那么下一个项目是蓝色的,但第一个项目不再是红色了。 第三张图片也是同样的问题,一切都变红了。 顺便说一句,我没有把所有明显的方法都放在一个理解问题上。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.concurrent.FutureTask;
import com.sun.javafx.tk.Toolkit.Task;
import javafx.scene.canvas.GraphicsContext;
import javafx.application.Platform;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
//import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.control.Cell;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.util.Callback;
import java.net.Socket;
//import javafx.scene.canvas.Canvas;
public class SampleController implements Initializable{
/**
*
*/
@FXML
private ListView<String> listefrequenceview;
@FXML
private ListView<String> listevolview;
@FXML
private ListView<String> listesolview;
@FXML
private ListView<String> listeexoview;
private InterfaceClairances interfaceclairance= new InterfaceClairances();
private ToggleGroup toggglegroup= new ToggleGroup();
@FXML
private ToggleButton avion1;
@FXML
private ToggleButton avion2;
@FXML
private ToggleButton avion3;
@FXML
public void clairancesol(MouseEvent arg0) {
interfaceclairance.getObslisteclairancesfrequence().add(listesolview.getSelectionModel().getSelectedItem());
interfaceclairance.getListeclairancesfrequence().add(new Clairance(listesolview.getSelectionModel().getSelectedItem(),3));
//interfaceclairance.getListeclairancespilotesSOL().get(listesolview.getSelectionModel().getSelectedIndex()).setEtat(2); // etat 2 : traitement en cours
//this.listefrequenceview.setItems(interfaceclairance.getObslisteclairancesfrequence());
this.listefrequenceview.getItems().add(listesolview.getSelectionModel().getSelectedItem());
}
@FXML
public void clairancevol(MouseEvent arg0) {
interfaceclairance.getObslisteclairancesfrequence().add(listevolview.getSelectionModel().getSelectedItem());
interfaceclairance.getListeclairancesfrequence().add(new Clairance(listevolview.getSelectionModel().getSelectedItem(),3));
//interfaceclairance.getListeclairancespilotesSOL().get(listevolview.getSelectionModel().getSelectedIndex()).setEtat(2); // etat 2 : traitement en cours
//this.listefrequenceview.setItems(interfaceclairance.getObslisteclairancesfrequence());
this.listefrequenceview.getItems().add(listevolview.getSelectionModel().getSelectedItem());
}
@FXML
public void clairanceexo(MouseEvent arg0) {
interfaceclairance.getObslisteclairancesfrequence().add(listeexoview.getSelectionModel().getSelectedItem());
interfaceclairance.getListeclairancesfrequence().add(new Clairance(listeexoview.getSelectionModel().getSelectedItem(),4));
//interfaceclairance.getListeclairancespilotesSOL().get(listeexoview.getSelectionModel().getSelectedIndex()).setEtat(2); // etat 2 : traitement en cours(demande du pilote) etat 3: traité par le controleur(ou demande du controleur) etat 4: traité et collationné par le pilote etat 1: non traité.
//listefrequenceview.setItems(interfaceclairance.getObslisteclairancesfrequence());
this.listefrequenceview.getItems().add(listeexoview.getSelectionModel().getSelectedItem());
}
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
this.listesolview.getItems().addAll(interfaceclairance.getObslisteclairancespilotesSOL());
this.listevolview.getItems().addAll(interfaceclairance.getObslisteclairancespilotesVOL());
this.listeexoview.getItems().addAll(interfaceclairance.getObslisteclairancespilotesEXO());
this.toggglegroup.getToggles().addAll(avion1,avion2,avion3);
this.listefrequenceview.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> p) {
return new ListCell<String>() {
@Override
protected void updateItem(String value, boolean empty) {
super.updateItem(value, empty);
setText(empty ? "" : value);
if (SampleController.this.interfaceclairance.getListeclairancesfrequence().get(SampleController.this.interfaceclairance.getListeclairancesfrequence().size()-1).getEtat()==3) {
setStyle( "-fx-text-fill: red;");
}
else {
setStyle("-fx-text-fill: skyblue;");
}
}
};
}
});
}
}
public class InterfaceClairances {
private ArrayList<Clairance> listeclairancespilotesSOL;
private ArrayList<Clairance> listeclairancesfrequence;
private ArrayList<Clairance> listeclairancespilotesVOL;
private ArrayList<Clairance> listeclairancespilotesEXO;
private ObservableList<String> obslisteclairancespilotesSOL=FXCollections.observableArrayList();
private ObservableList<String> obslisteclairancespilotesVOL=FXCollections.observableArrayList();
private ObservableList<String> obslisteclairancespilotesEXO=FXCollections.observableArrayList();
private ObservableList<String> obslisteclairancesfrequence = FXCollections.observableArrayList();
public class Clairance {
private String clairance;
private int etat;
first: https://i.stack.imgur.com/uEpK9.png
second: https://i.stack.imgur.com/FoQU1.png
third: https://i.stack.imgur.com/mm8w5.png
【问题讨论】:
-
请使用格式正确的minimal reproducible example 来更新您的问题,以证明问题所在。并且一定要阅读该链接,因为仅构建 MCVE 的过程可能会导致您的解决方案。
-
如前所述:minimal reproducible example - 请注意M!并在代码格式化方面付出一些努力