Нисек булдырырға исемлек йәшник Swing ҡушымтаһы?

May 12, 2025Ostavi poruku

Java Swing ҡушымталары өлкәһендә исемлек йәшниктәре баһалап бөткөһөҙ компоненттар булып тора, улар ҡулланыусыларға исемлектән бер йәки бер нисә әйбер һайларға мөмкинлек бирә. Ышаныслы исемлек йәшник тәьмин итеүсе булараҡ, мин’ве шаһит булды, үҙгәртеп ҡороу ҡөҙрәте скважина - проектланған исемлек йәшниктәре көсәйткән ҡулланыусы интерфейстары. Был блогтағы яҙмала, мин һеҙгә етәкселек итеү процесы аша булдырыу өсөн исемлек йәшник Swing ҡушымтаһы, нигеҙҙәрҙән алып алдынғы конфигурацияларға тиклем.

Impeller 2

Тәүшарттар

Беҙ исемлек йәшник булдырыу өсөн сумыр алдынан, һеҙ’ll кәрәк, төп аңлау Java программалау һәм Java Swing китапханаһы. Свинг-был GUI (График ҡулланыусылар интерфейсы) виджет өсөн Java инструменталь. Ул бай компоненттар йыйылмаһы тәьмин итә, уларҙы ҡулланырға мөмкин булдырыу өсөн визуаль йәмле һәм ҡулланыусы - дуҫ ҡушымта.

Төп исемлек ҡоҫҡоһон булдырыу

Әйҙәгеҙ, исемлек ҡоҫҡоно булдырыу иң ябай формаһынан башлайыҡ. Түбәндәге Java коды күрһәтә, нисек булдырыу өсөн төп исемлек ҡоҫҡоһо менән бер нисә өлгө пункттары:

``java импорт javax.swing.; импорт java.awt.;

йәмәғәт класлы BasicListBoxExample { йәмәғәт статик бушлыҡ магистр(Стринг[] args) { // JFrame JFrame рамкаһын булдырыу = яңы JFrame("Төп исемлеге йәшник миҫалы"); кадр.йүнәлергә DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); рамка.setSize(300, 200);

// Исемлек ҡоҫҡоһо өсөн әйберҙәр массивын булдырыу стринг[] элементтары = {"1-се пункт", "2-се пункт", "3-сө пункт", "Пункт 4"}; // JList булдырыу (исемлеге йәшник) менән әйберҙәр JList<String> list Box = яңы JList<>(элементтар); // JScrollPane булдырыу өсөн исемлек йәшник прокручиваемый JScrollPane прокрутка = яңы JScrollPane(listBox); // Өҫтәү прокрутка панелендә кадр рамкаһы.get ContentPane().. // Кадрҙы күренеп торған рамканы эшләү.set Visible(дөрөҫ); }.

} `` .

Был кодта, беҙ тәүҙә булдырыу а .JFrame, был беҙҙең Swing ҡушымтаһының төп тәҙрәһе. Һуңынан, беҙ билдәләйбеҙ массив телмәрҙәр, беҙҙең исемлек ҡоҫҡоһонда әйберҙәр булып хеҙмәт итәсәк. 1990 й.JListконструктор был массивты исемлек ҡоҫҡоһон булдырыу өсөн аргумент булараҡ ала. Исемлек йәшниктә күренгән урында һыйҙыра алмаған әйберҙәр күберәк булыуы мөмкин булғанлыҡтан, беҙ уны уратып алабыҙ.JScrollPaneтип, уны прокручивать. Ниһайәт, рамкаға төргәк панелендә өҫтәп, рамканы күренеп торабыҙ.

Исемлек йәшникте үҙгәртеүсе

Төп исемлек ҡоҫҡоһо беҙ өҫтәп, функциональ, әммә ул, бәлки, һеҙҙең ҡушымтаның бөтә талаптарына яуап бирмәй. Swing бер нисә ысул менән тәьмин итеү өсөн тышҡы ҡиәфәте һәм тәртибе исемлек ҡоҫҡоһо.

Элементтар һайлау

Ғәҙәттәгесә, исемлек ҡоҫҡоһо бер генә һайлау режимын мөмкинлек бирә. Әммә уны бер нисә һайлау режимына үҙгәртә алаһығыҙ. Бына нисек:

0061

java // JList JList булдырыу<String> list Box = яңы JList<>(элементтар); // Һайлау режимын бер нисә һайлау исемлегенә ҡуйығыҙ.

Был кодта, беҙ ҡулланабыҙ .specorate SelectionModeысулыJListсиныф. 1990 й.ListSelectionModel.МУЛЬТИПЛЕСИПЛИКАЛЬ_ИНТЕРВАЛЬСИЛЕКТӘРЕдаими ҡулланыусыға исемлек ҡоҫҡоһонда бер нисә йәнәш элементтар һайларға мөмкинлек бирә.

Рендеринг әйберҙәре

Шулай уҡ әйберҙәрҙе исемлек ҡоҫҡоһонда күрһәтелгән ысул менән үҙгәртә алаһығыҙ. Мәҫәлән, һеҙ һүрәттәрҙе текст менән бергә күрһәтергә теләйһегеҙ. Бының өсөн һеҙгә ҡулланыусы күҙәнәк рендеры булдырырға кәрәк. Бына ябай миҫал:

``java импорт javax.swing.; импорт java.awt.;

Класс CustomListCellRenderer оҙайтыу DefaultListCellRenderer { @Override йәмәғәт компоненты getListCellRenderererComponent(JList<?> исемлеге, Объект ҡиммәте, индексы, бул is Һайлана, бул ce cal yelderHasFocus) { Компонент c = supro.getListCellRendererComponent(исемлеге, индекс, индекс, Һайланма, is a is . calefallHasFocus); әгәр (индекс % 2 == 0) { c.setBackground(ТИК.ЛИГТ_ГРЕЙ); } тағы { c.setBackground(Төҫө. } ҡайтарыу в; } }.

йәмәғәт класы CustomListBoxExample { йәмәғәт статик бушлыҡ магистратура(Тринг[] args) { JFrame рамка = яңы JFrame("Ҡулланыусы исемлеге йәшник миҫалы"); кадр.йүнәлергә DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); рамка.setSize(300, 200);

Стринг[] әйберҙәр = {"1-се пункт", "2-се пункт", "3-сө пункт", "4-се пункт"}; JList<String> list Box = яңы JList<>(элементтар); // Ҡулланыусы күҙәнәк рендерингы listBox.setCellRenderer(яңы CustomListCellRenderer()) ҡуйырға; JScrollPane прокруткаПейн = яңы JScrollPane(исемлектә); рамка.get ContentPane().. өҫтәү(скроллПейн, Сикләү.CENTER); рамка.set Visible(ысын); }.

} `` .

Был миҫалда беҙ ҡулланыусылар өсөн күҙәнәк рендерын булдырабыҙ, уларҙы оҙайтыу юлы менәнДефолтЛистЦеллРендерерсиныф. Беҙ өҫтөнлөк итәбеҙГетлистселл Рендерер компонентыысулын үҙгәртеү өсөн фон төҫө һәр башҡа әйбер исемлеге ҡоҫҡоһо.

Мәғлүмәт моделдәре менән эшләү

Ҡатмарлыраҡ ҡушымталарҙа, һеҙ, бәлки, мәғлүмәт моделен ҡулланып, исемлек ҡоҫҡоһындағы әйберҙәр менән идара итеү өсөн. 1990 й.Ғәҙәттәгесә.класс – быны эшләү өсөн уңайлы ысул. Бына миҫал:

``java импорт javax.swing.; импорт java.awt.;

йәмәғәт класы DataModelListBoxExample { йәмәғәт статик бушлыҡ магистратураһы(Стринг[] args) { JFrame рамка = яңы JFrame("Мәғлүмәттәр моделе исемлеге йәшник миҫалы"); кадр.йүнәлергә DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); рамка.setSize(300, 200);

// DefaultListListListListListListModel-ды булдырыу<Сығарылыш> listModel = яңы ғәҙәттәгесә ListListListModel<>(); listModel.dddElement("А пункты"); listModel.dddElement("В пункт"); listModel.dddElement("Племет С"); // Мәғлүмәттәр моделе менән JList булдырыу JList<String> listBox = яңы JList<>(исемлек Модель); JScrollPane прокруткаПейн = яңы JScrollPane(исемлектә); рамка.get ContentPane().. өҫтәү(скроллПейн, Сикләү.CENTER); рамка.set Visible(ысын); }.

} `` .

Мәғлүмәттәр моделен ҡулланып, еңел генә өҫтәргә, юйырға йәки үҙгәртеү ваҡытында исемлек ҡоҫҡоһондағы әйберҙәрҙе үҙгәртергә мөмкинлек бирә.

Ысынбарлыҡ менән интеграциялау - Бөтә донъя ҡушымталары

List Box тәьмин итеүсе булараҡ, мин аңлайым, исемлек йәшниктәре йыш ҡына ысын ҡулланыла - донъя ҡушымталары күрһәтеү һәм идара итеү өсөн төрлө төр мәғлүмәттәр. Мәҫәлән, шыйыҡса машиналар өлөштәре менән идара итеү ҡушымтаһында, һеҙ, бәлки, исемлек йәшник ҡулланып, төрлө өлөштәрен күрһәтеү өсөн, мәҫәлән,Импеллер 1, 1990 й.Импеллер 2, һәмТоҙолоу һыу торбаһы.

0413

Бында ябай миҫал, нисек һеҙ интеграциялай ала исемлек йәшник шыйыҡса машиналар өлөштәре менән идара итеү ҡушымтаһы:

``java импорт javax.swing.; импорт java.awt.;

Desalination Water Pipe

йәмәғәт класы FluidMachineryPartsListListBoxExample { йәмәғәт статик бушлыҡ магистратура(Стринг[] args) { JFrame рамка = яңы JFrame("Флюид машиналар өлөштәре исемлеге йәшник"); кадр.йүнәлергә DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); рамка.setSize(300, 200);

DefaultListModel<String> өлөштәре Модель = яңы ғәҙәттәгесә LeartListModel<>(); partionsModel.dddElement("Импеллер 1"); partionsModel.dddElement("Импеллер 2"); partionsModel.dddElement("Һыу торбаһы тоҙһоҙландырыу"); JList<Стринг> өлөштәре ListBox = яңы JList<>(partsModel); JScrollPane прокруткаПейн = яңы JScrollPane(partsListBox); рамка.get ContentPane().. өҫтәү(скроллПейн, Сикләү.CENTER); рамка.set Visible(ысын); }.

} `` .

Һығымта

Swing ҡушымтаһында исемлек ҡоҫҡо булдырыу туранан-тура процесс, әммә ул юғары дәрәжәлә һығылмалылыҡ һәм персонализация тәҡдим итә. Һеҙ&#8217;ябай ҡушымта йәки ҡатмарлы предприятие төҙөү - кимәлдәге система, исемлек йәшниктәре ныҡ көсәйтергә мөмкин ҡулланыусы тәжрибәһе.

List Box тәьмин итеүсе булараҡ, мин юғары тәьмин итеү өсөн үҙ өҫтөнә ала - сифатлы исемлек ҡоҫҡо компоненттары, улар ышаныслы һәм еңел интеграциялау өсөн һеҙҙең Swing ҡушымталар. Әгәр һеҙ&#8217;беҙҙең исемлек йәшник тәҡдимдәрен тикшерергә йәки һеҙҙең проекттарҙа исемлек йәшниктәр булдырыу тураһында ниндәй ҙә булһа һорауҙарығыҙ бар, мин һеҙгә беҙгә мөрәжәғәт итергә саҡырам һатып алыу һәм артабан фекер алышыуҙар.

Һылтанмалар

  • «Һөҙөмтәле Java» Джошуа Блох
  • "Ява һелкенеше: Герберт Шилдттың башланғысы"