java jtextarea 超出_java – 如何保持JTextArea的大小不变?

我在我的应用程序中使用JTextArea的对象来处理发送短信.

我使用了DocumentFilter,只允许在textarea中输入160个字符,但现在,我希望textarea的大小是常量.如果我不按“输入”键继续写入同一行,或者即使我一直按下Enter键,它也会继续增加.我尝试过使用’滚动条’,但问题仍然存在.建议我这个.以下是我的代码.请检查一下.

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> info = new Vector> ();

Vector numbers = new Vector();

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

{

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

{

charCount++;

}

limit.setText(""+charCount+" Characters");

}

public void changedUpdate(DocumentEvent e)

{

//System.out.println("The legth(change): "+e.getLength());

}

}//end Send_sms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值