在下面的记事本程序中,因为jtextarea设置的滚动条的policy是as_need的,怎么没输入文字还是有滚动条? 应怎么改?import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.lang.*;public class MyMenuTest extends JFrame implements ActionListener{
JTextArea jta;
JScrollPane sp;
private JMenu fileMenu;
private JMenuItem newMenu,openMenu,saveMenu,
saveasMenu,exitMenu;
JPanel p1; String fileName = null;
FileDialog openFileDialog
= new FileDialog(this,"打开文件",FileDialog.LOAD);
FileDialog saveAsFileDialog
= new FileDialog(this,"另存为",FileDialog.SAVE);
public MyMenuTest(){
JMenuBar menuBar=new JMenuBar();//creat JMenuBar handler
setJMenuBar(menuBar);
fileMenu=new JMenu("file");
newMenu=new JMenuItem("new");
openMenu=new JMenuItem("open");
saveMenu=new JMenuItem("save");
saveasMenu=new JMenuItem("save as");
exitMenu=new JMenuItem("exit");
menuBar.add(fileMenu);
fileMenu.add(newMenu);
fileMenu.add(openMenu);
fileMenu.add(saveMenu);
fileMenu.add(saveasMenu);
fileMenu.add(exitMenu);
newMenu.addActionListener(this);
openMenu.addActionListener(this);
saveMenu.addActionListener(this);
saveasMenu.addActionListener(this);
exitMenu.addActionListener(this);
jta=new JTextArea(100,200);
jta.append(" ");
jta.setLineWrap(true);
jta.setWrapStyleWord(true);
p1 = new JPanel();
p1.add(jta);
//create the scroll pane
sp = new JScrollPane(p1);
sp.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//此处需要改动设置?
sp.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);//此处需要改动设置?
//sp.scrollRectToVisible(new Rectangle(150,150,300,300));
getContentPane().add(sp);setTitle("Notepad");
setBounds( 100, 100, 200, 200);
setVisible(true);
//this.getContentPane().setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
//Object eventSource = e.getActionCommand();
if(e.getActionCommand().equals("new")){
jta.setText("");
}
else if(e.getActionCommand().equals("open")){
openFileDialog.setVisible(true);
fileName = openFileDialog.getDirectory()+openFileDialog.getFile();
System.out.println("filename is:"+fileName);
if(fileName != null)
readFile(fileName);
}
else if(e.getActionCommand().equals("save")){
if(fileName != null) writeFile(fileName);
}
else if(e.getActionCommand().equals("save as")){
saveAsFileDialog.setVisible(true);
fileName = saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile();
if (fileName!= null) writeFile(fileName);
}
else if(e.getActionCommand().equals("exit")){
System.exit(0);
}
}
public static void main(String[] args){
MyMenuTest mmt=new MyMenuTest();
}
//读文件,打开文件.
public void readFile(String fileName){
try{
File file = new File(fileName);
FileReader readIn = new FileReader(file);
int size = (int)file.length();
int charsRead = 0;
char[] content = new char[size];
while(readIn.ready())
charsRead += readIn.read(content, charsRead, size - charsRead);
readIn.close();
jta.setText(new String(content, 0, charsRead));
}catch(IOException e){
System.out.println("错误");
}
}
//写入文件
public void writeFile(String fileName){
try{
File file = new File (fileName);
FileWriter writeOut = new FileWriter(file);
writeOut.write(jta.getText());
writeOut.close();
}catch(IOException e){
System.out.println("错误");
}
}
}
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.lang.*;public class MyMenuTest extends JFrame implements ActionListener{
JTextArea jta;
JScrollPane sp;
private JMenu fileMenu;
private JMenuItem newMenu,openMenu,saveMenu,
saveasMenu,exitMenu;
JPanel p1; String fileName = null;
FileDialog openFileDialog
= new FileDialog(this,"打开文件",FileDialog.LOAD);
FileDialog saveAsFileDialog
= new FileDialog(this,"另存为",FileDialog.SAVE);
public MyMenuTest(){
JMenuBar menuBar=new JMenuBar();//creat JMenuBar handler
setJMenuBar(menuBar);
fileMenu=new JMenu("file");
newMenu=new JMenuItem("new");
openMenu=new JMenuItem("open");
saveMenu=new JMenuItem("save");
saveasMenu=new JMenuItem("save as");
exitMenu=new JMenuItem("exit");
menuBar.add(fileMenu);
fileMenu.add(newMenu);
fileMenu.add(openMenu);
fileMenu.add(saveMenu);
fileMenu.add(saveasMenu);
fileMenu.add(exitMenu);
newMenu.addActionListener(this);
openMenu.addActionListener(this);
saveMenu.addActionListener(this);
saveasMenu.addActionListener(this);
exitMenu.addActionListener(this);
jta=new JTextArea(100,200);
jta.append(" ");
jta.setLineWrap(true);
jta.setWrapStyleWord(true);
p1 = new JPanel();
p1.add(jta);
//create the scroll pane
sp = new JScrollPane(p1);
sp.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//此处需要改动设置?
sp.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);//此处需要改动设置?
//sp.scrollRectToVisible(new Rectangle(150,150,300,300));
getContentPane().add(sp);setTitle("Notepad");
setBounds( 100, 100, 200, 200);
setVisible(true);
//this.getContentPane().setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
//Object eventSource = e.getActionCommand();
if(e.getActionCommand().equals("new")){
jta.setText("");
}
else if(e.getActionCommand().equals("open")){
openFileDialog.setVisible(true);
fileName = openFileDialog.getDirectory()+openFileDialog.getFile();
System.out.println("filename is:"+fileName);
if(fileName != null)
readFile(fileName);
}
else if(e.getActionCommand().equals("save")){
if(fileName != null) writeFile(fileName);
}
else if(e.getActionCommand().equals("save as")){
saveAsFileDialog.setVisible(true);
fileName = saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile();
if (fileName!= null) writeFile(fileName);
}
else if(e.getActionCommand().equals("exit")){
System.exit(0);
}
}
public static void main(String[] args){
MyMenuTest mmt=new MyMenuTest();
}
//读文件,打开文件.
public void readFile(String fileName){
try{
File file = new File(fileName);
FileReader readIn = new FileReader(file);
int size = (int)file.length();
int charsRead = 0;
char[] content = new char[size];
while(readIn.ready())
charsRead += readIn.read(content, charsRead, size - charsRead);
readIn.close();
jta.setText(new String(content, 0, charsRead));
}catch(IOException e){
System.out.println("错误");
}
}
//写入文件
public void writeFile(String fileName){
try{
File file = new File (fileName);
FileWriter writeOut = new FileWriter(file);
writeOut.write(jta.getText());
writeOut.close();
}catch(IOException e){
System.out.println("错误");
}
}
}
sp = new JScrollPane(jta);
2. 把 jta=new JTextArea(100,200); 改成 jta=new JTextArea();
jta.setWrapStyleWord(true);