AMcoder - javascript, python, java, html, php, sql

Ցանկի ընտրությունը անընդմեջ չի կատարվում

Ողջույն, ես ունեմ JLIST և նշանակել եմ cellRenderer: բայց ես չկարողացա ընտրել տարրը ցանկում: Իրականում այն ​​ընտրված է, բայց տեսողականորեն մենք չենք կարող տեսնել, որ այն ընտրված է, նշանակում է, որ ես չկարողացա տեսնել, թե որ կետն է ընտրված ցուցակում:

Իմ ցուցակի էկրանի պատկերը՝ մուտքագրեք պատկերի նկարագրությունը այստեղ

և սպասվում է մուտքագրեք պատկերի նկարագրությունը այստեղ

Երկրորդ էկրանի նկարը առանց CellRenderer-ի է: Բայց երբ ես ավելացնում եմ CellRenderer-ը, ես չկարողացա տեսնել ընտրված տարրը ցանկում:

Արդյո՞ք նորմալ վարքագիծ է, երբ դուք ավելացնում եք CellRenderer-ը ցուցակում:

ինչ եմ սխալ անում???

Խմբագրել.-

սա իմ CellRenderer դասն է.

public class ContactsRender extends JLabel implements ListCellRenderer {

    private static final long serialVersionUID = 1L;

    ImageIcon img;

    public ContactsRender(){
        setOpaque(true);
        setIconTextGap(12);
        setBackground(Color.WHITE);
        setForeground(Color.black);
    }

    @Override
    public Component getListCellRendererComponent(JList list,
            Object value, int index, boolean isSelected,
            boolean cellHasFocus) {
        if(value != null){
            User user = (User) value;
            String pres = user.getPresence().toLowerCase();
            if(pres.contains("unavailable")){
                img = new ImageIcon("res/offline.jpg");
            } else {
            img = new ImageIcon("res/online.jpg");
            }
            setText(user.getName());
            setIcon(img);

            return this;
        }
        return null;
    }
27.01.2011

Պատասխանները:


1

Դուք սխալ եք իրականացրել ձեր բջջային արտապատկերիչը: Renderer-ը պատասխանատու է ցուցադրման ֆոնը ընտրված գույնի վրա դնելու համար:

Կարդացեք JList API-ն և հետևեք Swing ձեռնարկի հղմանը «Ինչպես օգտագործել ցուցակները» թեմայով, որտեղ դուք կգտնեք աշխատանքային օրինակներ, որոնք օգտագործում են JList: Դուք նաև կգտնեք մի հատված, որը վերաբերում է ռենդեր գրելուն և օրինակին:

Խմբագրել. Բացի այդ, ես հենց նոր նկատեցի, որ դուք կարդում եք ձեր պատկերակը ցուցադրման կոդում: Դուք երբեք չպետք է դա անեք: Սրբապատկերը պետք է կարդալ միայն մեկ անգամ, երբ ստեղծվում է ցուցադրիչը, այնուհետև դուք պահում եք պատկերակը: Ամեն անգամ, երբ բջիջը պետք է վերաներկվի, արտապատկերիչը կանչվում է, այնպես որ արդյունավետ չէ շարունակել կարդալ պատկերակը:

27.01.2011
  • Ես ավելացրել եմ իմ CellRenderer դասը իմ հարցին: Կարող եք օգնել ինձ պարզել, թե ինչն է սխալ դրանում?? 27.01.2011
  • Դուք չեք սահմանում մատուցողի ֆոնը: Դուք պետք է ստուգեք isSelected փոփոխականը և համապատասխան կերպով սահմանեք ֆոնը: Ուսուցումն ունի աշխատանքային օրինակ: Ժամանակ տրամադրեք՝ կարդալու ձեռնարկը: 27.01.2011

  • 2

    Ձեր բջջային մատուցողի վրա դուք պետք է իրականացնեք գործը, որ isSelected is true: Ձեր ListCellRenderer համար.

    Component getListCellRendererComponent(JList<? extends E> list,
                                           E value,
                                           int index,
                                           boolean isSelected,
                                           boolean cellHasFocus)
    {
     if (!isSelected) doThis(index);
     else doThatForSelectedItem(index);
    }
    
    27.01.2011
  • thnx ձեր պատասխանի համար, բայց իմ հարցն այն է, թե ինչու ընտրությունը տեսանելի չէ gui-ում: նայեք առաջին էկրանին: Դրանում առկա տարրը ընտրված է, բայց մենք դա չենք կարող տեսնել: ԻՆՉՈՒ մինչդեռ երկրորդ էկրանի նկարում, որն առանց CellRenderer-ի է, մենք կարող ենք տեսնել ընտրությունը: 27.01.2011
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..