17-Maruza: Boshqarish komponentalari
Reja:
1. Text Pane компонентаси
2. Spinner компонентаси
3. Slider компонентаси
4. Progress Bar компонентаси
5. Table компонентаси
Матнлар билан ишловчи Swing нинг Text Field (бир сатрли) ва Text Area (кўп сатрли) компоненталари билан танишган эдик. Swing нинг Text Pane компонентаси ҳам матнлар билан ишловчи компонента бўлиб, жудда катта имкониятларга эга. Биринчидан, ҳажми жудда катта бўлган матнлар билан (файллар) ишлаш қулай бўлса, иккинчидан матнга ѐки матннинг ихтиѐрий бўлагига ҳар хил стилларни (белгиларнинг ўлчовини, рангини, кўринишини ва ҳ.к. ўзгартириш) қўллаш мумкин. Бундан ташқари бу компонентага матн билан бирга Swing нинг бошқа компоненталарини ҳам ўрнатиш имконияти мавжуд, масалан, Label, Button, Check Box ва бошқаларни. Қуйида бу компонентани қўллаш усуллари билан танишамиз. Бунинг учун:
Янги проект тузинг.
Форма сарловҳасига (title) матн муҳаррири деган ном беринг.
Формага Text Pane ва битта оддий тугма ўрнатинг (3.1.1-расм).
Text Pane ни соддалик учун Tp1 ва тугма босилганда Text Pane га матн ѐзадиган ҳодисани Yoz деб номланг.
3.1.1-расм. 3.1.2-расм.
Yoz ҳодисасининг программасини қуйидагича ѐзинг.
private void Yoz(java.awt.event.ActionEvent evt) { int k;
// Oddiy matn uchun stil
Style oddiy=Tp1.addStyle("Oddiy",null);
StyleConstants.setFontFamily(oddiy, "Arial");
StyleConstants.setFontSize(oddiy, 13);
// Sarlovha uchun stil
Style sarlovha = Tp1.addStyle("Sarlovha ", oddiy);
StyleConstants.setFontSize(sarlovha, 20);
StyleConstants.setBold(sarlovha, true);
// Sarlovha uchun rang
SimpleAttributeSet qizil = new SimpleAttributeSet();
StyleConstants.setForeground(qizil, Color.red);
// Yangi hujjat hosil qilish
StyledDocument doc = Tp1.getStyledDocument(); try { // Hujjatga matn yozish doc.insertString(doc.getLength(), "Ixtiyoriy Sarlovha matni"+"\n", sarlovha); doc.insertString(doc.getLength(), "Bu ixtiyoriy matn bo'lib,"+"\n",oddiy); doc.insertString(doc.getLength(), "Oddiy stilda chop etilgan."+"\n",oddiy); k=doc.getLength();//Joriy holatgacha bo’lgan matnning uzunligi doc.insertString(k, "Yana bitta Sarlovha"+"\n", sarlovha);
// Sarlovhani qismining ranginin o’zgartirish doc.setCharacterAttributes(4, 5, qizil, false); doc.setCharacterAttributes(k, 4, qizil, false);
// Swing komponentalarni hosil qilish va hujjatga joylashtirish JCheckBox check = new JCheckBox("Bu mumkin!"); check.setOpaque(true); Tp1.insertComponent(check);
doc.insertString(doc.getLength(),""+"\n",null);
JRadioButton radio = new JRadioButton("Bu ham mumkin!"); radio.setOpaque(true); Tp1.insertComponent(radio); JButton but=new JButton("Salom"); but.setOpaque(true); doc.insertString(doc.getLength(),""+"\n",null); doc.insertString(doc.getLength()," ",null);
Tp1.insertComponent(but); } catch (Exception ex) { ex.printStackTrace();
}
}
}
Программани ишга туширсак ва тегмани боссак экранда 3.1.2-расм кўринишидаги ойна ҳосил бўлади.
Программада oddiy va sarlovha номли иккита стил яратилган бўлиб, sarlovha стили oddiy стилдан баъзи параметрларни мерос сифатида олган.
Text Pane билан ишлаш жараѐнида албатта бирор ҳужжат яратилган бўлиши керак. Бу ҳужжат StyledDocument doc = Tp1.getStyledDocument(); буйруғи ѐрдами ҳосил қилинган. Бу ҳужжатга маълумот киритиш insertString метод ѐрдамида амалга оширилади. Бу метод
insertString(int offset, String str, AttributeSet a)
кўринишда бўлиб, унда:
offset- int (бутун ва ≥0) кўринишдаги қиймат. Киритилаѐтган матннинг ўрнини билдиради. Мисолда doc.getLength() методи жорий ҳолатдаги doc хужжатнинг узунлигини аниқлайди.
str-String туридаги ўзгарувчи (қиймат) бўлиб, ѐзилиши керак бўлган
матн.
a -AttributeSet туридаги ўзгарувчи (қиймат) бўлиб, ѐзилиши керак бўлган сатрнинг стилини аниқлайди. Агар стил кўрсатилмаса, унинг ўрнида null туриши ҳам мумкин.
Ёзилиши керак бўлган матн янги сатрдан бошланишини дастурчи ўзи таъминлаши лозим. Мисолда бу "\n" ѐрдамида амалга оширилган. doc.setCharacterAttributes(4, 5, qizil, false); методи ѐрдамида
сарловҳанинг маълум қисмлари қизил рангга бўялган. Бу метод setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)
кўринишда бўлиб, биринчи параметр қайси ўриндан бошлаб бўяшни билдиради ва унинг қиймати ≥0 бўлиши керак. Иккинчи параметр бўялиши керак бўлган матннинг узунлиги. Учинчи параметр танланган рангга мос атрибут. Тўртинчи параметр мантиқий қиймати бўлиб, у агар рост (true) бўлса янги стил қўлланади, акс ҳолда олдинги стилнинг таъсири сақланиб қолади
Программада учта Swing компонента яратилган бўлиб, улар ҳужжатга расмдагидек жойлаштирилган. Шуни таъкидлаш лозимки, агар Swing компоненталар программа йўли билан ҳосил қилинса, у ҳолда маълум пакетлар импорт қилинган бўлиши керак. Мисолда қуйидаги пакетлар импорт қилинган:
import javax.swing.*;- Swing компоненталар учун;
import javax.swing.text.*; - Text Pane туридаги ҳужжат учун; import java.awt.Color;- ранг танлаш учун.
Юқоридаги методлар билан бирга Text Pane учун бошқа методлар ҳам яратилган бўлиб, улардан қуйидагилари билан танишамиз:
getText(ўрни,узунлиги) – ҳужжатнинг кўрсатилган ўрнидан берилган
узунликдаги матнни олиш имкониятини беради.
insertString(ўрин, матн, атрибутлар) – ҳужжатнинг кўрсатилган ўрнидан
атрибутларини сақлаган ҳолда матнни қўйиш имкониятини беради.
remove(ўрни,узунлиги) – ҳужжатнинг кўрсатилган ўриндан берилган
узунликдаги қисмини қирқиш имкониятини беради.
getLength()) – жорий ҳолатда ҳужжатнингмоделида сақланаѐтган матн
узунлигини олиш имкониятини беради.
Text Pane нинг баъзи бир атрибутларини унинг хоссалар ойнасидан ҳам ўрнатиш мумкин. Масалан, белгиланган матн қисмининг рангини хоссалар ойнасининг selectedTextColor бўлимидан, унинг фонини эса selectionColor бўлимидан ўрнатиш мумкин.
Do'stlaringiz bilan baham: |