JTextArea.setTabSize() does not work. Tabs are always expanded to eight
characters, no matter what value setTabSize() is invoked with.
To see this, bring up the following application, use the slider to set
the tab size, then use the <TAB> key to check if the tab size has
changed.
=======================================================================
/*
* JTextAreaTest.java
* JTextArea.setTabSize() does not work
*/
import java.awt.*;
import java.awt.event.*;
import com.sun.java.swing.*;
import com.sun.java.swing.event.*;
public class JTextAreaTest extends JFrame implements ChangeListener {
JTextArea textarea;
JSlider tabSize;
JPanel infoPanel = new JPanel();
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
public JTextAreaTest() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
infoPanel.setLayout(new GridLayout(0,1));
infoPanel.add(new JLabel("JTextArea.setTabSize() does not work."));
infoPanel.add(new JLabel("Use slider to set tab size of textarea."));
c.add(BorderLayout.NORTH, infoPanel);
textarea = new JTextArea(10,40);
p1.add(textarea);
c.add(BorderLayout.CENTER, p1);
tabSize = new JSlider(JSlider.HORIZONTAL,0,40,20);
tabSize.setMajorTickSpacing(8);
tabSize.setMinorTickSpacing(1);
tabSize.createStandardLabels(8);
tabSize.setToolTipText("Invokes setTabSize().");
tabSize.setPaintTicks(true);
tabSize.setPaintLabels(true);
tabSize.addChangeListener(this);
tabSize.setValue(textarea.getTabSize());
p2.add(new JLabel("Tab size: "));
p2.add(tabSize);
p2.setBackground(Color.pink);
c.add(BorderLayout.SOUTH, p2);
}
public static void main(String argv[]) {
JFrame frame = new JTextAreaTest();
frame.setTitle("JTextArea Test");
frame.pack();
frame.setSize(600,350);
frame.setVisible(true);
}
public void stateChanged(ChangeEvent e) {
JSlider slider = (JSlider)e.getSource();
int value = slider.getValue();
System.out.println("Invoking setTabSize("+value+")...");
textarea.setTabSize(value);
}
}
=======================================================================