javaswing

Java Swing-07 Asosiy componentlar 2

(JList) JLIST KOMPONENTI
JList ob’ektlar ro’yhatini ko’rsatadigan komponentdir. U foydalanuvchiga ro’yhatdan bir yoki bir nechta qismni tanlash imkonini beradi.


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class JListgaMisol extends JFrame implements ActionListener {
 
 private JLabel label;
 private JList<String> royhatChap;
 private JList<String> royhatOng;
 private DefaultListModel<String> modelChap;
 private DefaultListModel<String> modelOng;
 private JButton hammasiOngga;
 private JButton tanlanganOngga;
 private JButton tanlanganChapga;
 private JButton hammasiChapga;
 
 public JListgaMisol() {
  initFM();
 }
 
 private void initFM() {
  JPanel panel = new JPanel();
  panel.setLayout(new FlowLayout());
  panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
 
  GraphicsEnvironment muhitGrafikasi = GraphicsEnvironment
    .getLocalGraphicsEnvironment();
 
  String[] shriftlar = muhitGrafikasi.getAvailableFontFamilyNames();
 
  modelChap = new DefaultListModel<String>();
  for (String shriftNomi : shriftlar) {
   modelChap.addElement(shriftNomi);
  }
  royhatChap = new JList<String>(modelChap);
 
  JPanel tugmalarPaneli = new JPanel();
  tugmalarPaneli
    .setLayout(new BoxLayout(tugmalarPaneli, BoxLayout.Y_AXIS));
 
  hammasiOngga = new JButton(">>");
  hammasiOngga.setAlignmentX(JButton.CENTER_ALIGNMENT);
  hammasiOngga.addActionListener(this);
 
  tanlanganOngga = new JButton(">");
  tanlanganOngga.setAlignmentX(JButton.CENTER_ALIGNMENT);
  tanlanganOngga.addActionListener(this);
 
  tanlanganChapga = new JButton("<");
  tanlanganChapga.setAlignmentX(JButton.CENTER_ALIGNMENT);
  tanlanganChapga.addActionListener(this);
 
  hammasiChapga = new JButton("<<");
  hammasiChapga.setAlignmentX(JButton.CENTER_ALIGNMENT);
  hammasiChapga.addActionListener(this);
 
  tanlanganOngga.setMaximumSize(hammasiOngga.getMaximumSize());
  tanlanganChapga.setMaximumSize(hammasiOngga.getMaximumSize());
  hammasiChapga.setMaximumSize(hammasiOngga.getMaximumSize());
 
  tugmalarPaneli.add(hammasiOngga);
  tugmalarPaneli.add(Box.createRigidArea(new Dimension(25, 7)));
  tugmalarPaneli.add(tanlanganOngga);
  tugmalarPaneli.add(Box.createRigidArea(new Dimension(25, 7)));
  tugmalarPaneli.add(tanlanganChapga);
  tugmalarPaneli.add(Box.createRigidArea(new Dimension(25, 7)));
  tugmalarPaneli.add(hammasiChapga);
  tugmalarPaneli.add(Box.createRigidArea(new Dimension(25, 7)));
 
  modelOng = new DefaultListModel<String>();
  royhatOng = new JList<String>(modelOng);
 
  royhatChap.addListSelectionListener(new ListSelectionListener() {
   public void valueChanged(ListSelectionEvent hodisa) {
    if (!hodisa.getValueIsAdjusting()) {
     String nomi = (String) royhatChap.getSelectedValue();
     Font shrift = new Font(nomi, Font.PLAIN, 22);
     label.setText("Tanlangan shrift ko'rinishi");
     label.setFont(shrift);
    }
   }
  });
 
  JScrollPane chapOynacha = new JScrollPane();
  chapOynacha.getViewport().add(royhatChap);
  chapOynacha.setPreferredSize(new Dimension(250, 200));
  panel.add(chapOynacha);
 
  panel.add(tugmalarPaneli);
 
  JScrollPane ongOynacha = new JScrollPane();
  ongOynacha.getViewport().add(royhatOng);
  ongOynacha.setPreferredSize(new Dimension(250, 200));
  panel.add(ongOynacha);
 
  label = new JLabel("Shriftni tanlang");
  label.setFont(new Font("Serif", Font.PLAIN, 22));
  add(label, BorderLayout.SOUTH);
 
  add(panel);
 
  pack();
  setResizable(false);
  setTitle("'JList' ga misol");
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setLocationRelativeTo(null);
 }
 
 public void actionPerformed(ActionEvent hodisa) {
  switch (hodisa.getActionCommand()) {
  case ">>":
   for (int index = 0; index < modelChap.getSize(); index++) {
    modelOng.addElement(modelChap.elementAt(index));
   }
   modelChap.clear();
   break;
  case ">":
   for (String qism : royhatChap.getSelectedValuesList()) {
    modelOng.addElement(qism);
    modelChap.removeElement(qism);
   }
   break;
  case "<":
   for (String qism : royhatOng.getSelectedValuesList()) {
    modelChap.addElement(qism);
    modelOng.removeElement(qism);
   }
   break;
  case "<<":
   for (int index = 0; index < modelOng.getSize(); index++) {
    modelChap.addElement(modelOng.elementAt(index));
   }
   modelOng.clear();
   break;
  }
 }
 
 public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    JListgaMisol misol = new JListgaMisol();
    misol.setVisible(true);
   }
  });
 }
}

 


Misolimizda chap va o’ng tomonda ikkita ro’yhat komponentlari va o’rtada 4 ta tugma ko’rinadi. Chap tomondagi ro’yhat komponentida shriflar nomlarining ro’yhati chiqadi. O’tkazish tugmalarini bosish orqali shrift(lar) nom(lar)ini bir ro’yhatdan ikkinchisiga o’tkazish mumkin.

GraphicsEnvironment muhitGrafikasi = GraphicsEnvironment
    .getLocalGraphicsEnvironment();
GraphicsEnvironment klasidan yasagan ob'ektimiz bizga mavjud shriftlar nomlari ro'yhatini olishimiz uchun kerak.
 
 String[] shriftlar = muhitGrafikasi.getAvailableFontFamilyNames();
Bu qatorda biz muhitGrafikasi ob'ektidan foydalanib muhitdagi barcha shriftlar ro'yhatini 'shriftlar' nomli String massivga o'zlashtirib oldik.
 
  modelChap = new DefaultListModel<String>();
  for (String shriftNomi : shriftlar) {
   modelChap.addElement(shriftNomi);
  }

JList komponenti ro’yhatiga o’zgartiwish kiritishda DefaultListModel bilan ishlash ancha qulay. Shuning uchun bu klasdan ob’ekt olib so’ngra u ob’ektga shriflar massividagi elementlarni qo’shib chiqdik.

royhatChap = new JList<String>(modelChap);
O'ziga 'String'lik qiymat oluvchi 'royhatChap' deb nomlangan JList ob'ekt yasadik.
modelOng = new DefaultListModel<String>();
royhatOng = new JList<String>(modelOng);

O’ng tomondagi ro’yhat uchun ham DefaultListModel va JList ob’ektlari yasab oldik.
royhatChap.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent hodisa) {
if (!hodisa.getValueIsAdjusting()) {
String nomi = (String) royhatChap.getSelectedValue();
Font shrift = new Font(nomi, Font.PLAIN, 22);
label.setText("Tanlangan shrift ko'rinishi");
label.setFont(shrift);
}
}
});

royhatChap dagi ro’yhatdan biror qiymat tanlanganda, o’sha labelimiz shrifti nomiga tanlangan shriftni o’rnatdik. Bu yerda (!hodisa.getValueIsAdjusting()) sharti sichqoncha kursori bosilgan holda to’yhat qiymatlari ustida uning kursorini surayotgan vaqtimizda shart ichidagi kodni ishlatmaslik uchun kerak.
JScrollPane chapOynacha = new JScrollPane();
chapOynacha.getViewport().add(royhatChap);
chapOynacha.setPreferredSize(new Dimension(250, 200));
panel.add(chapOynacha);

JScrollPane – yonboshda ko’rinib turuvchi, ro’yhatni surishni tezlashtirish uchun ishlatiladigan va uning tahminan qayerida turganligini ko’rsatib turuvchi komponent. Shu komponentga JList ni joylashtirib qo’yyapmiz. Keyin unga o’lcham taynlab, panelga qo’shdik.
label = new JLabel("Shriftni tanlang");
label.setFont(new Font("Serif", Font.PLAIN, 22));
add(label, BorderLayout.SOUTH);

‘JLabel’ dan ‘label’ ob’ektini yasadik, Uning matni hamda shriftini belgilab berdik, hamda oynaning pastki qismiga o’rnatdik.
add(panel);

chapOynacha, tugmalarPaneli va ongOynacha joylashirilgan panelni oyna (JFrame) ga qo’ydik. Jori oynamiz boshqaruvhini BorderLayout nazorat qilayotgan bo’lgani uchun, add() ning 2-argumentga qiymat ko’rsamasak, u avtomatik markazdan o’rin oladi.
public void actionPerformed(ActionEvent hodisa) {
switch (hodisa.getActionCommand()) {
case ">>":
for (int index = 0; index < modelChap.getSize(); index++) {
modelOng.addElement(modelChap.elementAt(index));
}
modelChap.clear();
break;

ushbu metod oynamizdagi tugmalar bosilgan vaqtda ishga tushadi. hodisa.getActionCommand() orqali chertilgan tugma matni (sarlavhasi) ni olib unga ko’ra ish bajaryapmiz. Yuqorida qism kodda ‘>>’ tugmaga chertilgandagi holatga kod yozilgan. modelChap ro’yhatidagi barcha elementlarni aylanib chiqib, ularni birma-bir modelOng ga qo’shib chiqdik, so’ngra esa modelChap dagi ro’yhatni tozalab tashladik.
case ">":
for (String qism : royhatChap.getSelectedValuesList()) {
modelOng.addElement(qism);
modelChap.removeElement(qism);
}
break;

Chertiglan tugma “>” bo’lsa, ‘royhatChap’dan tanlangan barcha qismlarni birma bir olib, uni modelOng ga qo’shib chiqdik, songra ularni ‘modelChap’dan o’chirdik.

(JTextArea) JTEXTAREA KOMPONENTI
JTextArea ko’p-satrlk oddiy matnlarni ko’rsatib beruvchi matn maydonidir. Bu matnlar bilan ishlashga mo’ljallangan sof Java Swing komponentidir (ya’ni har qanday platformada ishlayveradi). Bu komponentga matnni yuqoriga-pastga harakatlantiruvchi uskuna qo’shilmagan, uning uchun JScrollPane komponentidan foydalanamiz.


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.text.*;
public class TextAreagaMisol extends JFrame {
private JTextArea matnMaydoni;
private JTextField izlashMatni;
private JScrollPane surishUskunasi;
public TextAreagaMisol() {
initFM();
}
private void initFM() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
izlashMatni = new JTextField("Qidiriladigan matn...");
izlashMatni.setFont(new Font("Serif", Font.PLAIN, 18));
izlashMatni.setSelectionStart(0);
izlashMatni.setSelectionEnd("Qidiriladigan matn...".length());
izlashMatni.setMaximumSize(new Dimension(362, 0));
izlashMatni.addActionListener(new MatnIzlash());
panel.add(izlashMatni);
panel.add(Box.createRigidArea(new Dimension(0, 15)));
matnMaydoni = new JTextArea();
matnMaydoni.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
matnMaydoni.setFont(new Font("Serif", Font.PLAIN, 18));
matnMaydoni.setLineWrap(true);
matnMaydoni.setWrapStyleWord(true);
matnMaydoni.setBackground(Color.BLACK);
matnMaydoni.setForeground(Color.WHITE);
matnMaydoni.setEditable(false);
lugatniYuklash();
matnMaydoni.setCaretPosition(0);
surishUskunasi = new JScrollPane();
surishUskunasi.getViewport().add(matnMaydoni);
panel.add(surishUskunasi);
add(panel);
setTitle("Ruscha-O'zbekcha lug'at");
setSize(new Dimension(400, 500));
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public void lugatniYuklash(){
StringBuffer lugat = new StringBuffer();
File fayl = new File("lug'at.txt");
try {
Scanner kirishManbasi = new Scanner(fayl,"UTF-8");
while (kirishManbasi.hasNextLine()) {
lugat.append(kirishManbasi.nextLine()+"\n");
}
kirishManbasi.close();
matnMaydoni.setText(lugat.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
class MatnIzlash implements ActionListener{
public void actionPerformed(ActionEvent hodisa) {
surishUskunasi.getVerticalScrollBar().setValue(0);
String izlashManbasi = matnMaydoni.getText();
String izlanganMatn = "(?m)^"+izlashMatni.getText()+".*$";
Highlighter belgilagich = matnMaydoni.getHighlighter();
Highlighter.HighlightPainter boyoq =
new DefaultHighlighter.DefaultHighlightPainter(Color.BLUE);
belgilagich.removeAllHighlights();
Pattern tartib = Pattern.compile(izlanganMatn,Pattern.UNICODE_CASE+Pattern.CASE_INSENSITIVE);
Matcher mostlik = tartib.matcher(izlashManbasi);
int boshlanish=0, tugash=0;
while (mostlik.find()) {
boshlanish = mostlik.start();
tugash = mostlik.end();
try {
belgilagich.addHighlight(boshlanish, tugash, boyoq);
} catch (BadLocationException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
if(boshlanish>0){
matnMaydoni.setCaretPosition(boshlanish);
} else {
JOptionPane.showMessageDialog(getContentPane(), "'"+izlashMatni.getText()+"' lug'atdan topilmadi.");
izlashMatni.setSelectionStart(0);
izlashMatni.setSelectionEnd(izlanganMatn.length());
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TextAreagaMisol misol = new TextAreagaMisol();
misol.setVisible(true);
}
});
}
}

Bu misol oynada JTextArea va JTextField komponentlarini ko’rsatadi. JTextField komponentiga muntazam ifoda yozilib, enter bosilda, JTextArea komponentidagi most tushuvchi matnni qirmizi rangda ajratib ko’rsatib beradi.

izlashMatni = new JTextField("Qidiriladigan so'z...");
izlashMatni.setFont(new Font("Serif", Font.PLAIN, 18));
izlashMatni.setSelectionStart(0);
izlashMatni.setSelectionEnd("Qidiriladigan matn...".length());
izlashMatni.setMaximumSize(new Dimension(362, 0));
izlashMatni.addActionListener(new MatnIzlash());

Bu yerda JTextField klasidan izlashMatni ob’ekti yasaldi. JTextField konstruktori argumentiga ko’rsatilgan matn, JTextField komponentiga yozilib chiqadi. setFont() metodi komponentga shrift o’rnatish uchun idhlatilgan. setSelectionEnd() va setSelectionEnd() metodlari esa komponentdagi matnni belgilash uchun kerak. Chunki matn belgilangan holda tursa, birinchidan bu komponent nima uchun kerakligi bilinadi, ikkinchidan foydalanuvchi klaviaturadan ihtiyoriy tugmani bosganda u matn avtomatik o’chib foydalanuvchi yozgan belgi JTextField komponentiga o’rnaydi. setMaximumSize() JTextField komponentimizga o’lcham berish uchun ishlatildi. addActionListener() orqali unga enter bosilganda bajarilishi kerak bo’lgan yo’riqnomani yozgan klasimizdan ob’ekt yasab ko’rsatildi. MatnIzlash klasi bilan keyinroq batafsil tanishamiz.
matnMaydoni = new JTextArea();
matnMaydoni.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
matnMaydoni.setFont(new Font("Serif", Font.PLAIN, 18));
matnMaydoni.setLineWrap(true);
matnMaydoni.setWrapStyleWord(true);
matnMaydoni.setBackground(Color.BLACK);
matnMaydoni.setForeground(Color.WHITE);
matnMaydoni.setEditable(false);
lugatniYuklash();
matnMaydoni.setCaretPosition(0);
[/codesyntax ]
JTextArea klasidan ob&#8217;ekt olindi. Huddi &#8216;JTextField&#8217;da bo&#8217;lgani kabi, JTextArea konstruktori argumentiga ko&#8217;rsatilgan matn ham JTextArea komponentining dasatlabki matni bo&#8217;lib ko&#8217;rinadi, lekin uni argument olmaydigan konstruktori ham bor. setBorder() metod yordamida dastur ko&#8217;rinishini chiroyliroq qilish uchun, chetlardan 8 pikseldan bo&#8217;sh joy tashlab chiqildi. setFont() bilan unga shrift o&#8217;rnatildi, setLineWrap metodi argumentiga true qiymat berilsa, JTextArea komponentidagi so&#8217;z qatoriga sig&#8217;may qolgan bo&#8217;gindan avtomatik keyinga qatorga ko&#8217;chadi. setWrapStyleWord() true bo&#8217;lsa, sig&#8217;may qolgan bo&#8217;g&#8217;in emas, so&#8217;z yangi qatorga ko&#8217;chadi. setBackground(Color.BLACK) metodi JTextArea dan olingan ob&#8217;ekt foniga qora rang berish uchun, setForeground(Color.WHITE) esa matnga oq rang berish uchun ishlatilgan. setEditable() argumentiga false berilsa, JTextArea o&#8217;ziga joylashtirilga matnni tahrirlab bo&#8217;lmaydigan holatga keltiradi. lugatniYuklash() metodi JTextArea ga fayldan matn olib yuklash uchun yozilgan. setCaretPosition() metodi JTextArea dagi kursorni argumentida ko&#8217;rsatilgan o&#8217;ringa suradi.
[codesyntax lang="java"]
surishUskunasi = new JScrollPane();
surishUskunasi.getViewport().add(matnMaydoni);
panel.add(surishUskunasi);

Bu yerda JScrollPane komponenti ob’ekti yasaldi va matnMaydoni komponentiga bilan birlashtirildi. So’ngra u panelga qo’shildi. Bu holatda endi ‘matnMaydoni’ni panelga qo’shish shartmas, chunki u ‘surishUskunasi’ bilan birgalikda panelga qo’shilib ketadi.
izlashMatni.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent hodisa) {
'izlashMatni'ga ActionListener qo'shyapmiz.
class MatnIzlash implements ActionListener{
public void actionPerformed(ActionEvent hodisa) {
surishUskunasi.getVerticalScrollBar().setValue(0);

bu yerda MatnIzlash klasini yasayapmiz. Bu klas ActionListener interfeys bilan shartnoma tuzib uning metodlarini bajartishga va’da beryapti. actionPerformed() metodi bu aslida ActionEvent interfeysdan kelayotgan metoddir. getVerticalScrollBar().setValue(0) ifodasi orqali biz tik joylashgan ScrollBar komponentini eng yuqori o’ringa surdik.
String izlashManbasi = matnMaydoni.getText();
String izlanganMatn = "(?m)^"+izlashMatni.getText()+".*$";

Ikkita String ob’ekt yasadikb ularga izlashManbasi va izlashMatni matnlarini o’zlashtirdik. Izlangan matn bu yerda g’ayrioddiy qo’shimchalar bilan berilgan. Muntazam ifodalarni o’rganganimizda ‘^’ satr boshini, ‘$’ satr ohirini, ‘.’ har qanday belgini ‘*’ nol yoki bir nechamartta takroriylikni ifodalashini o’rgangan edik. Bu yerdagi ‘(?m)’ ham aslida muntazam ifodalar bilan ishlatiladi va ko’p qatorlilikni yoqish uchun ishlatiladi. Agar biz ‘(?m)’ ni bermasak Muntazam ifodamiz ‘matnMaydoni’dagi matnni bitta qator deb qaraydi.
Highlighter belgilagich = matnMaydoni.getHighlighter();
Highlighter.HighlightPainter boyoq =
new DefaultHighlighter.DefaultHighlightPainter(Color.BLUE);
belgilagich.removeAllHighlights();

Bu yerda belgilagich va bo’yoq yasadik. Ikkala ob’ektni topilgan so’zni belgilashda ishlatamiz. bo’yog’imizning rangini ko’k qilib oldik.
Pattern tartib = Pattern.compile(izlanganMatn,Pattern.UNICODE_CASE+Pattern.CASE_INSENSITIVE);
Matcher mostlik = tartib.matcher(izlashManbasi);

Muntazam ifodadan foydalanishni boshlayapmiz, ‘Pattern’ va ‘Matcher’ klaslaridan ob’ekt yasadik.
int boshlanish=0, tugash=0;
while (mostlik.find()) {
boshlanish = mostlik.start();
tugash = mostlik.end();
try {
belgilagich.addHighlight(boshlanish, tugash, boyoq);
} catch (BadLocationException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}

Topilgan so’z qatorining boshlanish va tugash o’rinlarini aniqlab, osha oraliqni belgilagich bilan belgilab chiqdik.
if(boshlanish>0){
matnMaydoni.setCaretPosition(boshlanish);
} else {
JOptionPane.showMessageDialog(getContentPane(), "'"+izlashMatni.getText()+"' lug'atdan topilmadi.");
izlashMatni.setSelectionStart(0);
izlashMatni.setSelectionEnd(izlanganMatn.length());
}

Topilgan so’zningni boshlanish o’rni 0 dan katta ekanligi, so’z topilganini anglatadi, shunday bo’lsa, foydalanuvchiga natija ko’rinarli bo’lishi uchun ‘matnMaydoni’dagi kursorni ‘boshlanish’ ga suryapmiz. Bo’lmasa topilmaganligi to’g’risidagi habarni ko’rsatib yana izlashMatni dagi so’zni belgilab qo’ydik, chunki undagi so’z topilmagach, har qanday klavishani boshish bilan topilmagan so’zni o’chirib tashlash ham maqsadga muvofiq bo’ladi. getContentPane() bu joriy freym (oyna) uchun konteyner ob’ektni javob qilib qaytaradi. Buni yozishdan maqsad, Dasturimiz oynadi ekranning qayerida joylashgan bo’lishidan qat’iy nazar, habar oynasini dasturimiz oynasi markazidan chiqarishdir.

(JTextPane) JTEXTPANE KOMPONENTI
JTextPane matnlar bilan ishlashda qo’llaniladigan, rivojlangan komponentdir. Bu komponentdan foydalanib, matnlar ustida ba’zi bir murakkab formatlarni amalga oshirish mumkin. Bu komponentda HTML hujjatlarni ham ko’rsa bo’ladi.


import java.awt.BorderLayout;
import java.io.File;
import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
public class TextPanegaMisol extends JFrame {
JTextPane matnOynachasi;
public TextPanegaMisol() {
initFM();
}
private void initFM() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
matnOynachasi = new JTextPane();
matnOynachasi.setContentType("text/html");
matnOynachasi.setEditable(false);
matnOynachasi.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
faylniYuklash();
JScrollPane surgich = new JScrollPane();
surgich.getViewport().add(matnOynachasi);
panel.add(surgich);
add(panel);
setSize(435,350);
setResizable(false);
setTitle("'JTextPane'ga misol");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
private void faylniYuklash() {
try {
File htmlFile = new File("sinov.html");
String sahifa = "file:///"+htmlFile.getAbsolutePath();
matnOynachasi.setPage(sahifa);
} catch (IOException istosno) {
JOptionPane.showMessageDialog(getContentPane(), istosno.getMessage());
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TextPanegaMisol ex = new TextPanegaMisol();
ex.setVisible(true);
}
});
}
}

Mana bu JTextPane komponentiga yuklayotgan HTML kodimizdir.


<html>
<head>
<title>Oddiy HTML hujjat</title>
</head>
<body>
<h2>Oddiy HTML hujjat</h2>
<p>
<b>JTextPane</b> html hujjatlarni ko'rsatib berishi mimkin.
</p>
<br>
<pre>
JScrollPane surgich = new JScrollPane();
JTextPane matnOynasi = new JTextPane();
matnOynasi.setContentType("text/html");
matnOynasi.setEditable(false);
</pre>
<br>
<small>'Java Swing' ni o'rganamiz, 2014</small>
</body>
</html>

Bizning misolimizda, JTextPane komponentini oynada ko’rsatish bilan birga unga HTML hujjatni yuklayapmiz. Misolimizda matnlar formatlanib ko’rinayotganini yaqqol his etishimiz mumkin.

matnOynachasi = new JTextPane();
matnOynachasi.setContentType("text/html");
matnOynachasi.setEditable(false);
matnOynachasi.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
faylniYuklash();

Biz JTextPane komponent yasab, uning takibi HTML hujjat bo’lishini aytdik va tahrirlanish qobiliyatini yo’qqa chiqardik.
private void faylniYuklash() {
try {
File htmlFile = new File("sinov.html");
String sahifa = "file:///"+htmlFile.getAbsolutePath();
matnOynachasi.setPage(sahifa);
} catch (IOException istosno) {
JOptionPane.showMessageDialog(getContentPane(), istosno.getMessage());
}
}

Bu yerda JTextPane komponentiga HTML fayl yuklandi, yuklashda setPage() argumentiga faylning URL (Uniform Resource Locator) manzili ko’rsatilishi kerak bo’lganligidan yuqoridagi ikkita qatordagi ifoda yozildi.

Bu bo’limda ‘Java Swing’ komponentlari to’g’risida gaplashishda davom etdik.

(1,128 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: