第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ListChangeListener、AddListener 到 ListView 或

ListChangeListener、AddListener 到 ListView 或

慕桂英3389331 2022-07-14 10:42:12
我有一個 java 程序,我沒有編寫我正在反轉(zhuǎn)/更新的代碼,以便添加一些急需的功能。該程序根據(jù) /input 中的一些 csv 文件生成兩個 ListView,list1:NameEntry 和 list2:GroupEntry。NameEntry 包含帶有相應(yīng)復(fù)選框的用戶名列表。GroupEntry 包含一長串用戶角色及其復(fù)選框。我當(dāng)前的任務(wù)是在 GUI 中添加一個“選擇所有角色”復(fù)選框,將所有 GroupEntry 角色項(xiàng)設(shè)置為“真”。這成功地完成了。我的問題是將 onChanged() 偵聽器添加到 ListView 或單個復(fù)選框項(xiàng),以便在手動取消選中一個或多個角色的情況下禁用“設(shè)置所有角色”切換。@FXML  public void setAllRoles()  {    ObservableList<GroupEntry> groups = this.list2.getItems();    if (this.allRoles) {      this.allRoles = false;      for (GroupEntry item : groups) {      item.setSelected(new SimpleBooleanProperty(false));      this.list2.refresh();      }    } else {      this.allRoles = true;      for (GroupEntry item : groups) {      item.setSelected(new SimpleBooleanProperty(true));      item.addListener(new ListChangeListener<GroupEntry>() {           public abstract onChanged(ObservableValue<? extends GroupEntry> ov,             Boolean old_val, Boolean new_val) {                 //System.out.println(item.isSelected());                 allRoles = false;             }      });      }      this.list2.refresh();    }  }嘗試編譯控制器 .class 文件時,我收到以下錯誤:invalid method declaration; return type required           public abstract onChanged(ObservableValue<? extends GroupEntry> ov,                           ^我也嘗試過不使用抽象,但編譯器返回相同的錯誤。這都是javafx。有誰知道問題可能是什么或有任何明確的示例/指南?我已經(jīng)閱讀了無數(shù)的文檔頁面,但似乎無法解決這個簡單的錯誤。我對Java相當(dāng)陌生,但不是編碼。非常感謝提前!
查看完整描述

2 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個贊

經(jīng)過大量調(diào)查和反復(fù)試驗(yàn),下面的代碼現(xiàn)在可以正常運(yùn)行,同時提供正確的視覺反饋,使用 checkbox.setIndeterminate() 并實(shí)現(xiàn)與 'item.isSelected().getValue()' 配對的“當(dāng)前閾值”、“最大閾值”整數(shù)變量觸發(fā)復(fù)選框狀態(tài)的條件。當(dāng)然有更清潔的方法來實(shí)現(xiàn),但這對我有用。固定為:


public void setAllRoles()

{

thrshld = 0;

ObservableList<GroupEntry> groups = this.list2.getItems();

for (GroupEntry item : groups) {

  thrshld--;

}

thrshldMax = thrshld;


if (this.allRoles) {

  this.allRoles = false;

  for (GroupEntry item : groups) {

    item.setSelected(new SimpleBooleanProperty(false));

    item.isSelected().addListener(new ChangeListener<Boolean>() {

        @Override

        public void changed(ObservableValue<? extends Boolean> ov,

          Boolean old_val, Boolean new_val) {

            BooleanProperty thatCB = item.isSelected();

            if (thatCB.getValue() == true) {

              checkbox2.setIndeterminate(true);

              thrshld++; // = thrshld + 1;

            } else {

              thrshld--; // = thrshld - 1;

            } 

            if (thrshld == thrshldMax) {

              checkbox2.setIndeterminate(false);

              checkbox2.setSelected(false);

            }

            if (thrshld == 0) {

              checkbox2.setIndeterminate(false);

              checkbox2.setSelected(true);

            }

            //status.setText("state: " +thatCB.getValue()+ "\r\nthrshld: " +thrshld+ "Max: " +thrshldMax);

          }

    });

  }

  this.list2.refresh();

} else {

  this.allRoles = true;

  thrshld = 0;

  for (GroupEntry item : groups) {

    item.setSelected(new SimpleBooleanProperty(true));

    item.isSelected().addListener(new ChangeListener<Boolean>() {

        @Override

        public void changed(ObservableValue<? extends Boolean> ov,

          Boolean old_val, Boolean new_val) {

            BooleanProperty thisCB = item.isSelected();

            if (thisCB.getValue() == true) {

              thrshld++; // = thrshld + 1;

              if (thrshld == 0) {

                checkbox2.setIndeterminate(false);

                checkbox2.setSelected(true);

              }

            } else {

              checkbox2.setIndeterminate(true);

              thrshld--; // = thrshld - 1;

              if (thrshld == thrshldMax) {

                checkbox2.setIndeterminate(false);

                checkbox2.setSelected(false);

              }

            }

            //status.setText("state: " +thisCB.getValue()+ "\r\nthrshld: " +thrshld+ "Max: " +thrshldMax);

          }

    });

  }

  this.list2.refresh();

 }

}



查看完整回答
反對 回復(fù) 2022-07-14
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個贊

這是一個簡單的解決方案。您在方法聲明中缺少類型。例如void。onChanged應(yīng)該是方法,而不是構(gòu)造函數(shù)。還要刪除 abstract限定符。

 public void onChanged(ObservableValue<? extends GroupEntry> ov

EDIT ListChangeListener是一個界面。您需要正確覆蓋該onChanged方法。該方法需要與定義中相同的參數(shù):

void onChanged(ListChangeListener.Change<? extends E> c)


查看完整回答
反對 回復(fù) 2022-07-14
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號