Wie Halten Sie die Größe Der JTextArea konstant?
Ich bin mit einem Objekt der JTextArea in meiner Anwendung, die sich mit dem senden von sms.
Ich habe einen DocumentFilter, so dass nur 160 Zeichen werden bei der Eingabe in die textarea aber jetzt möchte ich die Größe der textarea konstant sein. es geht auf die Erhöhung, wenn ich weiter schreiben auf der gleichen Zeile ohne drücken der 'enter' - Taste, oder auch, wenn ich dauernd drücken Sie nur die Enter - Taste. Ich habe versucht, einmal mit 'scrollbar' auch, aber das problem bleibt dasselbe. Schlagen Sie mich etwas über diese. Unten ist mein code. Bitte überprüfen Sie es.
class Send_sms extends JPanel implements ActionListener,DocumentListener
{
JButton send;
JTextArea smst;
JLabel title,limit;
JPanel mainp,titlep,sendp,wrap,titlewrap,blankp1,blankp2,sendwrap;
JScrollPane scroll;
Border br,blackbr;
Boolean flag = false;
PlainDocument plane;
public static final int LINES = 4;
public static final int CHAR_PER_LINE = 40;
//character limit 160 for a sms
public Send_sms()
{
br = BorderFactory.createLineBorder(Color.RED);
blackbr = BorderFactory.createEtchedBorder(EtchedBorder.RAISED,Color.DARK_GRAY,Color.GRAY);
setBorder(blackbr);
title = new JLabel("Enter the text you want to send!");
title.setFont(new Font("",Font.BOLD,17));
limit = new JLabel(""+charCount+" Characters");
smst = new JTextArea(LINES,CHAR_PER_LINE);
smst.setSize(100,100);
plane = (PlainDocument)smst.getDocument();
//adding DocumentSizeFilter 2 keep track of characters entered
plane.setDocumentFilter(new DocumentSizeFilter(charCount));
plane.addDocumentListener(this);
send = new JButton("Send");
send.setToolTipText("Click Here To Send SMS");
send.addActionListener(this);
//scroll = new JScrollPane(smst);
//scroll.setPreferredSize(new Dimension(200,200));
//scroll.setVerticalScrollBarPolicy(null);
//scroll.setHorizontalScrollBarPolicy(null);
smst.setBorder(br);
blankp1 = new JPanel();
blankp2 = new JPanel();
titlep = new JPanel(new FlowLayout(FlowLayout.CENTER));
titlewrap = new JPanel(new GridLayout(2,1));
mainp = new JPanel(new BorderLayout());
sendwrap = new JPanel(new GridLayout(3,1));
sendp = new JPanel(new FlowLayout(FlowLayout.CENTER));
wrap = new JPanel(new BorderLayout());
titlep.add(title);
titlewrap.add(titlep);
titlewrap.add(blankp1);
sendp.add(send);
sendwrap.add(limit);
sendwrap.add(blankp2);
sendwrap.add(sendp);
wrap.add(smst,BorderLayout.CENTER);
mainp.add(titlewrap,BorderLayout.NORTH);
mainp.add(wrap,BorderLayout.CENTER);
mainp.add(sendwrap,BorderLayout.SOUTH);
add(mainp);
}
public void actionPerformed(ActionEvent e)
{
Vector<Vector<String>> info = new Vector<Vector<String>> ();
Vector<String> numbers = new Vector<String>();
if(e.getSource() == send)
{
//Call a function to send he message to all the clients using text
//charCount = 165;
String msg = smst.getText();
if(msg.length() == 0)
JOptionPane.showMessageDialog(null,"Please Enter Message","Error",JOptionPane.ERROR_MESSAGE);
else
{
// System.out.println("Message:"+msg);
Viewdata frame = new Viewdata(msg);
limit.setText(""+charCount+" Characters");
charCount = 160;
}
}
}
public void insertUpdate(DocumentEvent e)
{
System.out.println("The legth:(insert) "+e.getLength());
for(int i = 0;i<e.getLength(); i++)
{
if(charCount >0)
charCount--;
else
break;
}
limit.setText(""+charCount+" Characters");
}
public void removeUpdate(DocumentEvent e)
{
//System.out.println("The legth(remove): "+e.getLength());
for(int i = 0;i<e.getLength(); i++)
{
charCount++;
}
limit.setText(""+charCount+" Characters");
}
public void changedUpdate(DocumentEvent e)
{
//System.out.println("The legth(change): "+e.getLength());
}
}//end Send_sms
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klang, wie Sie erstellen den text Bereich mit
Wenn dieses format benutzt wird der Textbereich nicht haben eine bevorzugte Größe, also es hält auf dem wachsen. Wenn Sie verwenden:
Dann den Textbereich haben eine bevorzugte Größe von 2 Zeilen und (in etwa) 30 Spalten. Als Sie geben, wenn Sie mehr als die bevorzugte Breite der horizontalen Bildlaufleiste wird angezeigt. Oder wenn Sie es einschalten, einwickeln, dann wird der text umbrochen und eine vertikale Bildlaufleiste angezeigt wird.
müssen Sie Folgendes angeben:
Aber das eigentliche problem ist, dass Sie zur Eingabe von mehr als 160 Zeichen. Sie müssen erstellen Sie eine Art von Prüfung die übersprungen werden alle eingegeben Zeichen, wenn es bereits 160 Zeichen geschrieben.
Initialisieren der textArea mit einem Dokument, das extends PlainDocument und in die insertString-Methode Begrenzung der Zeichen auf 160