public class FrameDemo extends JPanel
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
String[] read file contents using FileArrayProvider
for loop through above String array
g2.draw(new Line2D.Double(...));
}
public static void main(String[] args)
{
JFrame frame = new JFrame("JFrame Example");
frame.add(new FrameDemo());
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class FileArrayProvider // taken from StackOverFlow
{
public String[] readLines(String filename) throws IOException
{
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
java.util.List<String> lines = new ArrayList<String>();
String line = null;
while((line=bufferedReader.readLine())!=null)
{
lines.add(line);
}
bufferedReader.close();
return lines.toArray(new String[lines.size()]);
}
}
嗨,在paintComponent方法里面,我为了绘制线条而读取文件行,我得到了很多线条,有时候超过几百万。因此,我的框架冻结了一段时间......这是否是正确的做法?有没有更好的方法来做到这一点?这样它就不会冻结,并在显示框架时绘制所有线条?java-jframe-drawline
我认为默认情况下双缓冲是在Swing中不是吗? – 2010-11-24 18:13:03