Skip to content

Java Swing တွင် JTextArea အသုံးပြုခြင်း

Java Swing မှာ JTextArea ဆိုတာဟာ စာကြောင်းများစွာပါဝင်တဲ့ စာသား (multiple-line text) input တွေကို user ဆီကနေ ရယူဖို့အတွက် အသုံးပြုတဲ့ component တစ်ခု ဖြစ်ပါတယ်။ JTextArea ကို အသုံးပြုပြီး ရိုးရှင်းတဲ့ text area တွေကို ဖန်တီးနိုင်သလို၊ အဲ့ဒီထဲမှာ ရိုက်ထည့်ထားတဲ့ စာသားတွေကို ပြန်ဖတ်တာ၊ ပြုပြင်တာနဲ့ event handling တွေကိုလည်း လုပ်ဆောင်နိုင်ပါတယ်။ အောက်မှာ JTextArea ကို အသုံးပြုပြီး ရိုးရှင်းတဲ့ example တစ်ခုကို ဖော်ပြထားပါတယ်။

java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TextAreaExample {
    public static void main(String[] args) {
        // JFrame ဖြင့် window တစ်ခုကို ဖန်တီးပါ။
        JFrame frame = new JFrame("JTextArea Example");

        // JTextArea ဖြင့် text area တစ်ခုကို ဖန်တီးပါ။
        JTextArea textArea = new JTextArea(10, 30); // 10 rows နှင့် 30 columns ပါသော text area
        textArea.setLineWrap(true); // Text ကို လိုင်းအဆုံးတွင် အလိုအလျောက် wrap လုပ်ပါ။

        // JScrollPane ဖြင့် text area ကို scrollable ဖြစ်အောင် ပြုလုပ်ပါ။
        JScrollPane scrollPane = new JScrollPane(textArea);

        // JButton ဖြင့် Button တစ်ခုကို ဖန်တီးပါ။
        JButton button = new JButton("Submit");

        // Button ကို နှိပ်သောအခါ လုပ်ဆောင်မည့် event listener ကို ထည့်ပါ။
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // Text area ထဲမှ text ကို ဖတ်ပြီး message dialog ဖြင့် ပြပါ။
                String inputText = textArea.getText();
                JOptionPane.showMessageDialog(frame, "You entered:\n" + inputText);
            }
        });

        // JPanel ဖြင့် components များကို စီစဉ်ပါ။
        JPanel panel = new JPanel();
        panel.add(scrollPane);
        panel.add(button);

        // Panel ကို frame ထဲသို့ ထည့်ပါ။
        frame.add(panel);

        // Window ကို close လုပ်သောအခါ program ကို အလိုအလျောက် ရပ်ပါ။
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Window ၏ size ကို သတ်မှတ်ပါ။
        frame.setSize(400, 300);

        // Window ကို မြင်နိုင်အောင် ပြပါ။
        frame.setVisible(true);
    }
}

Code ရှင်းလင်းချက်

ဒီ code exampleထဲက အဓိကကျတဲ့ အစိတ်အပိုင်းတွေကို တစ်ခုချင်းစီ ထပ်ပြီး ရှင်းပြပါမယ်။

  1. JTextArea

    JTextArea ဟာ စာကြောင်းများစွာပါဝင်တဲ့ စာသား input တွေကို လက်ခံရယူဖို့အတွက် အသုံးပြုတဲ့ component ပါ။ new JTextArea(10, 30) ဆိုတာက 10 rows (စာကြောင်း ၁၀ ကြောင်းစာ အမြင့်) နဲ့ 30 columns (စာလုံး ၃၀ လုံးစာ အကျယ်) ရှိတဲ့ text area တစ်ခုကို ဖန်တီးတာ ဖြစ်ပါတယ်။

    java
    JTextArea textArea = new JTextArea(10, 30);

Text Area Example

  • setLineWrap(true):

    ဒီ method ကို ခေါ်လိုက်ရင် စာသားတွေဟာ text area ရဲ့ အကျယ်ဘောင်ကို ရောက်တာနဲ့ နောက်တစ်ကြောင်းကို အလိုအလျောက် ဆင်းသွားပါလိမ့်မယ်။ ဒါဟာ စာသားရှည်တွေ ရိုက်တဲ့အခါ မရှိမဖြစ်လိုအပ်တဲ့ feature ပါ။

  1. JScrollPane

    JTextArea ဟာ သူ့အလိုလို scrollbar တွေ ပေါ်မလာပါဘူး။ ဒါကြောင့် text area ထဲမှာ စာသားတွေ အများကြီး ရိုက်ထည့်တဲ့အခါ အောက်ဘက်ကို ဆက်မြင်နိုင်ဖို့ JScrollPane ကို အသုံးပြုပြီး scrollbar တွေ ထည့်သွင်းပေးရပါတယ်JScrollPane ကို ဖန်တီးတဲ့အခါ သူ့ထဲမှာ ထည့်သွင်းလိုတဲ့ component (ဒီနေရာမှာ textArea) ကို constructor မှာ ပေးပို့ရပါတယ်။

    java
    JScrollPane scrollPane = new JScrollPane(textArea);

Text Area Example

  1. JPanel

    JPanel ဟာ Swing မှာ components တွေကို စီစဉ်ပေးဖို့ အသုံးပြုတဲ့ container တစ်ခု ပါ။ ဒီexampleမှာ JScrollPane (သူ့ထဲမှာ JTextArea ပါဝင်ပြီးသား) နဲ့ JButton ကို JPanel ထဲကို ထည့်သွင်းထားပါတယ်။

    java
    JPanel panel = new JPanel();
    panel.add(scrollPane);
    panel.add(button);

JTextArea ၏ အခြား Features များ

JTextArea သည် multiple-line text input များကို ရယူရုံသာမက၊ အောက်ပါ features များကိုလည်း support ပေးပါသည်။

  1. Text Wrapping

    JTextArea ထဲမှာ စာသားတွေ ဘောင်ကျော်သွားတဲ့အခါ အလိုအလျောက် နောက်တစ်ကြောင်းကို ဆင်းစေဖို့ setLineWrap(true) ကို သုံးနိုင်ပါတယ်။ ပိုပြီး စနစ်တကျ wrap လုပ်ချင်ရင်တော့ setWrapStyleWord(true) ကို တွဲသုံးနိုင်ပါတယ်။ ဒါက စာလုံးအလယ်ကနေ မဖြတ်ဘဲ စာလုံးရဲ့ အဆုံးမှာမှ အောက်ဆင်းစေတာ ဖြစ်ပါတယ်။

    java
    textArea.setLineWrap(true); // Text ကို wrap လုပ်ပါ။
    textArea.setWrapStyleWord(true); // စာလုံးအဆုံးတွင် wrap လုပ်ပါ။
  2. Text Alignment

    JTextArea ထဲမှာ ရိုက်ထည့်ထားတဲ့ စာသားတွေကို ဘယ်ဘက်၊ ညာဘက်၊ အလယ် စသဖြင့် ချိန်ညှိနိုင် ပါတယ်။ JTextField မှာလို setHorizontalAlignment() method တိုက်ရိုက်မရှိဘဲ setAlignmentX() သို့မဟုတ် setAlignmentY() ကို အသုံးပြုရတာ ပုံစံနည်းနည်းကွဲပြားပါတယ်။ ဒါပေမဲ့ Layout Manager တွေနဲ့ ပေါင်းစပ်ပြီး နေရာချထားတာက ပိုပြီးထိရောက်ပါတယ်။

    java
    textArea.setAlignmentX(JTextArea.CENTER); // Text ကို အလယ်တွင် ချိန်ညှိပါ။

TIP

  • မှတ်ချက် JTextArea ၏ internal text alignment သည် JLabel သို့မဟုတ် JTextField ကဲ့သို့ တိုက်ရိုက် setHorizontalAlignment မရှိပါ။ ၎င်းကို JTextPane သို့မဟုတ် JEditorPane ကဲ့သို့သော ပိုမိုအဆင့်မြင့်သော text component များတွင် ထိန်းချုပ်နိုင်သည်။ သို့မဟုတ် JTextArea ကို JTextPane ထဲတွင်ထည့်၍ StyledDocument ဖြင့် ချိန်ညှိနိုင်သည်။ ယေဘုယျအားဖြင့် JTextArea ၏ alignment ကို ၎င်းပါဝင်သော Layout Manager ဖြင့် ထိန်းချုပ်ရခြင်းက ပို၍ များသည်။
  1. Text Limit

JTextArea ထဲမှာ ရိုက်ထည့်နိုင်တဲ့ စာလုံးရေ အရှည်ကို ကန့်သတ်ချင်ရင် setDocument method ကို JTextField မှာလိုပဲ အသုံးပြုနိုင်ပါတယ်။

java
textArea.setDocument(new PlainDocument() {
    @Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        if (getLength() + str.length() <= 100) { // Maximum 100 characters
            super.insertString(offs, str, a);
        }
    }
});

TIP

  • မှတ်ချက်။ ဒီ code snippet ဟာ javax.swing.text.PlainDocument, javax.swing.text.AttributeSet, javax.swing.text.BadLocationException စတဲ့ class တွေကို import လုပ်ဖို့ လိုအပ်ပါတယ်။