2012-09-08 60 views
1

在Java中,可以在指定的JTextArea列号处插入字符串的任何函数。在特定位置在JTextArea中插入字符串

例如,

String str = "This is a sample text" 

String => column Number 

This => at 0 

is => at 10 

a => at 14 

sample => at 20 

text => at 25 
+0

嗯......我不明白。你的意思是在某封信? – Doorknob

+0

@PicklishDoorknob jtextarea列号 – FirmView

+0

@Reimeus你的答案是正确的!!!,有/没有替代 – mKorbel

回答

2

请你看看下面这个例子,它采用的JTextComponent的viewToModel()方法。

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

public class TextAreaExample extends JFrame 
{ 
    private JTextArea tarea = new JTextArea(10, 10); 
    private JTextField tfield = new JTextField(10); 
    private Object[] possibleValues = { "First", "Second", "Third" }; 

    private void createAndDisplayGUI() 
    { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     tarea.setText("Hello there\n"); 
     tarea.append("Hello student://"); 
     JScrollPane scroll = new JScrollPane(tarea); 

     tfield.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent ae) 
      { 
       tarea.append(tfield.getText() + "\n"); 
      } 
     }); 

     tarea.addMouseListener(new MouseAdapter() 
     { 
      public void mouseClicked(MouseEvent me) 
      { 
       int x = me.getX(); 
       int y = me.getY(); 
       System.out.println("X : " + x); 
       System.out.println("Y : " + y); 
       int startOffset = tarea.viewToModel(new Point(x, y)); 
       System.out.println("Start Offset : " + startOffset); 
       String text = tarea.getText(); 
       String firstPart = text.substring(0, startOffset); 
       String secondPart = text.substring(startOffset, text.length()); 

       Object selectedValue = JOptionPane.showInputDialog(null, 
                "Choose one", "Input", 
                JOptionPane.INFORMATION_MESSAGE, null, 
                possibleValues, possibleValues[0]); 

       if (selectedValue != null) 
       { 
        String newText = firstPart + " " 
               + (String) selectedValue 
               + " " 
               + secondPart; 
        tarea.setText(newText);       
       } 
      } 
     }); 

     getContentPane().add(scroll, BorderLayout.CENTER); 
     getContentPane().add(tfield, BorderLayout.PAGE_END); 
     pack(); 
     setLocationByPlatform(true); 
     setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new TextAreaExample().createAndDisplayGUI(); 
      } 
     }); 
    } 
} 
+0

我的up_vote好的回答 – mKorbel

+0

@mKorbel:THANKYOU并保持微笑:-) –

相关问题