2011-06-25 18 views
9

İçindebulunan JScrollPane var ve JTextArea'nın yönünü sağdan sola doğru ayarlamaya çalışıyorum, böylece içindeki metin sağdan başlayacak ve kaydırma çubuğu solJTextArea yönünün sağdan sola doğru nasıl ayarlanacağı (JOptionPane içinde)

olacak denedim aşağıdaki ancak yönelim yönünü etkilemedi:

txt.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
txt.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
txt.setAlignmentX(JTextArea.RIGHT_ALIGNMENT); 

DÜZENLEME:

iki cevaplar camickr & trashgod iyi çalışıyor ama JTextArea benim bir nesne Mesaj olarak kullanmak ve OptionPane iletmek benim programımda değil.

EDIT2: Ben bu konuya alternatif bir çözüm yoktur .. JOptionPane içeriğine uygularsanız setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); çalışmaz anladım

? Benim koduna benzer

: Sol

scrollPane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

olacak

import java.awt.*; 
import java.util.*; 
import javax.swing.*; 
public class TextArea extends JPanel 
{ 
    private JTextArea txt = new JTextArea(); 
    public TextArea() 
    { 
     setLayout(new GridLayout()); 
     txt.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     JScrollPane scroll = new JScrollPane(txt); 
     scroll.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     setPreferredSize(new Dimension(200,200)); 
     this.add(scroll); 
    } 
    private void display() 
    { 
     Object[] options = {this}; 
     JOptionPane pane = new JOptionPane(); 
     int option = pane.showOptionDialog(null, null, "Title", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]); 
    } 
    public static void main(String[] args) 
    { 
     new TextArea().display(); 
    } 
} 
+0

Post sizin SSCCE var !!!! – camickr

+0

Son olarak, her soruyla birlikte yayınlanması gereken bir SSCCE. Güncellemeye bakın. – camickr

cevap

7

ve kaydırma yüzden içindeki metin sağa

başlayacak
textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

Metin sağ tarafta başlıyor, ancak satırın başına yerleştirilmek yerine yazdığınız sırada sonuna kadar ekleniyor.

Güncelleme: bir seçenek bölmesinde neden çalışmıyor

Bilmiyorum. İşte bu basit bir çözümdür:

import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.event.*; 

public class Test 
{ 
    public static void main(String args[]) throws Exception 
    { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JTextArea textArea = new JTextArea(4, 20); 
       JScrollPane scrollPane = new JScrollPane(textArea); 
       JPanel panel = new JPanel(); 
       panel.add(scrollPane); 

       scrollPane.addAncestorListener(new AncestorListener() 
       { 
        public void ancestorAdded(AncestorEvent e) 
        { 
         JScrollPane scrollPane = (JScrollPane)e.getComponent(); 
         scrollPane.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
        } 

        public void ancestorMoved(AncestorEvent e) {} 
        public void ancestorRemoved(AncestorEvent e) {} 
       }); 

       JOptionPane.showMessageDialog(null, panel); 
      } 
     }); 
    } 
} 
+0

hala sağda –

+0

Benim için iyi çalışıyor, SSCCE gönderin! – camickr

+0

@camickr SSCCE'yi nerede görebilirim? –

7

Bu işe yarıyor.

enter image description here

import java.awt.ComponentOrientation; 
import java.awt.EventQueue; 
import java.awt.GridLayout; 
import java.util.Locale; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

/** @see http://stackoverflow.com/questions/6475320 */ 
public class RTLTextArea extends JPanel { 

    private static final String s = "مرحبا العالم"; 
    private JTextArea jta = new JTextArea(7, 5); 
    private Locale arabic = new Locale("ar", "KW"); 
    private ComponentOrientation arabicOrientation = 
     ComponentOrientation.getOrientation(arabic); 

    public RTLTextArea() { 
     this.setLayout(new GridLayout()); 
     this.add(new JScrollPane(jta)); 
     this.applyComponentOrientation(arabicOrientation); 
     for (int i = 0; i < 8; i++) { 
      jta.append(s + "\n"); 
     } 
    } 

    private void display() { 
     JFrame f = new JFrame("RTLTextAre"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(this); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new RTLTextArea().display(); 
      } 
     }); 
    } 
} 
+0

Arapça metin hoş geldiniz için düzeltmeler. – trashgod

+0

Bu çok iyi çalışıyor, ancak programımda neden çalışmadığını bilmiyorum:/Tekrar kodumu yeniden kontrol etmem gerekiyor –

+0

Ve bu yüzden SSCCE'nizi nereye göndermeniz isteniyor! Kodu yazmamızı beklemeyin, size çok iyi çalıştığını söyledim. Tek yapmanız gereken tek bir kod satırı denemeniz gerektiğinde kaşık besleme koduna inanmam. Sen böyle bir şey öğrenmiyorsun. – camickr

2

bu hat

setComponentOrientation (ComponentOrientation.RIGHT_TO_LEFT)

değişim kelimelerin doğru düzeni.

ben bu bir sonuç

KBytes 80,78

İlgili konular