左对齐的,虽然有点笨。和Word的对齐方式一样。 String s = jTextArea1.getText(); String newS = ""; char c = '\n'; int begin = 0; int end = 0; for( int i = begin; i < s.length() -1 ; i++ ) { if( s.charAt(i) == c ) { String tempS = ""; end = i; tempS = s.substring(begin,end); newS += tempS.trim() + c; } begin = end; } jTextArea1.setText( newS + s.substring(end,s.length()).trim());
是不是该对文本域添加事件监听?然后在textChanged(TextEvent e)方法中执行setAlignmentX(Component.LEFT_ALIGNMENT);函数?
JTextArea textArea=new JTextArea();
JButton leftButton=new JButton("左对齐");
JButton centerButton=new JButton("居中对齐");
JButton rightButton=new JButton("右对齐");为按钮添加事件监听器:
leftButton.addActionListener(this);
centerButton.addActionListener(this);
rightButton.addActionListener(this);然后,public void actionPerformed(ActionEvent e){
Object eventSource = e.getSource();
if(eventSource==leftButton){
textArea.setAlignmentX(textArea.LEFT_ALIGNMENT);
repaint();
}else if(eventSource==centerButton){
textArea.setAlignmentX(textArea.CENTER_ALIGNMENT);
repaint();
}
else if(eventSource==rightButton){
textArea.setAlignmentX(textArea.RIGHT_ALIGNMENT);
repaint();
}
}上面的代码应该没问题吧?怎么就不行呢?还望高手解答,分不够再加
如果是JTextField 好办,你用setHorizontalAlignment(JTextField.LEFT|JTextField.CENTER|JTextField.RIGHT )方法可以实现。不是你们说的那个setAlignmentX(textArea.CENTER_ALIGNMENT);如果是JTextArea,就没有setHorizontalAlignment(int)这个方法了。有点难办!继续琢磨中
因为
你使用的方法只是对以后添加的起作用
比如你使用的像textArea.setAlignmentX(textArea.RIGHT_ALIGNMENT);你不使用在事件中是肯定有效果的
至于怎么实现你的功能,我也没想到 呵呵
alpha15(奥法)朋友所说的不使用在事件中肯定行,但是我想用按钮事件来触发,应该也是一样的实现吧,怎么就不行呢?百思不得其解啊!
还望有高手来解答~~~~~~~~~~
LeftAction中
{
String s = jTextArea1.getText();
//可以判断s是否存在回车或者多次空格.
jTextArea1.setAlignmentX(jTextArea1.LEFT_ALIGNMENT);
jTextArea1.setText(s.trim());
jTextArea1.repaint();
}
这样可以保证第一行的平移,但如果存在多行空格,或者回车,要判断S,把S中的空格和回车去掉.
String s = jTextArea1.getText();
String newS = "";
char c = '\n';
int begin = 0;
int end = 0;
for( int i = begin; i < s.length() -1 ; i++ )
{
if( s.charAt(i) == c )
{
String tempS = "";
end = i;
tempS = s.substring(begin,end);
newS += tempS.trim() + c;
}
begin = end;
}
jTextArea1.setText( newS + s.substring(end,s.length()).trim());
不过我没看出来上面代码哪一部分是实现左对齐的?newS变量有一个换行符,能实现换行;
但是s.substring(end,s.length()).trim()这一句不是很明白,兄弟能不能再说清楚点?
还有,右对齐和居中对齐是不是一样的思想呢?我想估计和左对齐不同吧另外:我查了一下资料,setAlignmentX(float)方法能实现组件对齐,但不是文本里面的文字对齐,
比如几个放在面板上的按钮,用setAlignmentX(Component.LEFT_ALIGNMENT)能实现左对齐,但并不是我们所说的文字左对齐。