我想编一个java应用程序,在菜单下新的窗口里 读取的文本文档可以在窗口里显示出来,我只会在控制台显示,所以请教大家,希望大家帮帮忙,急用。

解决方案 »

  1.   

    我不是要做一个记事本,我是想把文本文档内容在JFrame窗口里显示出来
      

  2.   

    http://b155.photo.store.qq.com/psb?/264b37c4-d111-493c-bd4a-fa37779d04ec/swwWxhTurRLv4pkI6DLcUFUQPUwYWTy0WP0fWuDFiwc!/b/YYM7ZlxZEQAAYmZYbFyPEQAA
      

  3.   

    先用IO函数读出文本文件的内容,然后将内容显示在一个JTextArea中,如果不是显示在JTextArea。那就多加几个JLabel好了,每个JLabel表示一行,但是JLabel要自己安排好位子。如果你JLabel也不想用,那就自己用Graphics画吧
      

  4.   

    使用了LineBreakMeasurer和TextLayout。jdk7编译运行。
    import java.awt.*;
    import java.awt.font.*;
    import java.awt.geom.*;
    import java.io.File;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.nio.file.Files;
    import java.text.*;
    import java.util.List;
    import javax.swing.*;public class TextLayoutExample {
        private TextLayoutExample(){}
        public static void main(final String... args) {
            EventQueue.invokeLater(new Runnable(){
                    @Override public void run(){
                        JFrame frame = new JFrame("TextLayout Example");
                        try {
                            frame.add(new TextViewer(Files.readAllLines(new File("TextLayoutExample.java").toPath(), Charset.forName("ASCII"))));
                        } catch(IOException e) {
                        }
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.setPreferredSize(new Dimension(800,600));
                        frame.pack();
                        frame.setVisible(true);
                    }
                });
        }
        private static class TextViewer extends JPanel {
            private List<String> content = null;
            public TextViewer(){}
            public TextViewer(List<String> content) { this.content = content;}
            public void setContent(List<String> content) { this.content = content ; repaint();}
            @Override public void paintComponent(Graphics g) {
                if(content == null) return;
                Point2D.Float pen = new Point2D.Float(10,20);
                Graphics2D g2d = (Graphics2D) g;
                for(String s: content) {
                    if(s.isEmpty()) continue;
                    AttributedCharacterIterator asi = new AttributedString(s).getIterator();
                    LineBreakMeasurer lbm = new LineBreakMeasurer(asi, g2d.getFontRenderContext());
                    float wrappingWidth = getSize().width - 15;
                    while (lbm.getPosition() < asi.getEndIndex()){
                        TextLayout layout = lbm.nextLayout(wrappingWidth);
                        pen.y += (layout.getAscent());
                        float dx = layout.isLeftToRight() ?
                            0 : (wrappingWidth - layout.getAdvance());                    layout.draw(g2d, pen.x + dx, pen.y);
                        pen.y += layout.getDescent() + layout.getLeading();
                    }
                }
            }
        }
    }
      

  5.   

    9楼的程序 编译的时候 import java.nio.file.Files;导入这个包报错。
    我按照10楼的方法做的,IO读取,用JTextField.setText("");显示文本内容的  ,结果文本内容全部显示在一行。
    我想JTextField显示文本内容 按照txt原内容显示 怎么办啊
      

  6.   

    txt 里面有换行  怎么在JTextArea.setText("");显示里 也跟着换行
      

  7.   

    你确定你取出的数据有换行?如果用的是nextLine()是没有换行的哦,系统会默认把换行符截掉。
    import java.awt.BorderLayout;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    public class TestFrame extends JFrame {
    JTextArea jta ;
    public TestFrame() {
    jta = new JTextArea();
    add(jta,BorderLayout.CENTER);
    jta.setText("asdfbac\nwerwrowaer\nafsef");
    this.pack();
    this.setVisible(true);
    } public static void main(String[] args){
    new TestFrame();
    }
    }
      

  8.   

    我是读取 电脑目录下的 文本文件,不是像你初始化setText("")的一样
      

  9.   

    大哥有什么不一样吗??
    按的意思是。
    str = "我是读取 电脑目录下的 文本文件";
    System.out.print(str);
    如果str 能换行说明 下面就能换行。
    jta.setText(str);
    实在不行把你代码贴出来。
      

  10.   


    package adminframe.xitiku;import java.awt.Font;
    import java.awt.Rectangle;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;public class Xitiku1 extends JFrame { public Xitiku1() {
    try {
    jbInit();
    } catch (Exception exception) {
    exception.printStackTrace();
    } } public String ImportText() {
    String str = ""; try {
    Scanner scanner = new Scanner(new File("D:\\abc.txt"));
    while (scanner.hasNextLine()) {
    str += scanner.nextLine();
    str+='\n';
    }
    } catch (FileNotFoundException e) {
    System.out.println("file doesn't exist");
    }
    return str; } private void jbInit() throws Exception {
    // TODO Auto-generated method stub getContentPane().setLayout(null);// 清空布局管理器
    lab.setFont(new java.awt.Font("楷体_GB2312", Font.BOLD, 25));
    lab.setText(" 例  题  讲  解  ");
    lab.setBounds(new Rectangle(218, 25, 300, 20)); // setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点
    // width:组件的长度 height:组件的高度
    jScrollPane1.setBounds(new Rectangle(22,50, 600, 420));
    jScrollPane1.setBorder(BorderFactory.createEtchedBorder()); lab1.setFont(new java.awt.Font("楷体_GB2312", Font.BOLD, 10));
    lab1.setText(ImportText());
    lab1.setBounds(new Rectangle(22, 15, 300, 100));
    jScrollPane1.getViewport().add(lab1);
    //设置文本自动换行
    lab1.setLineWrap(true);
    //设置滚动面板管理文本域
    jScrollPane1.setViewportView(lab1);
    lab1.setEditable(false); this.setTitle("第一章");
    this.getContentPane().add(lab);
    this.getContentPane().add(lab1);
    this.getContentPane().add(jScrollPane1); jScrollPane1.getViewport().add(lab1);// setLocationRelativeTo(this); } JLabel lab = new JLabel();
    JTextArea lab1 = new JTextArea();
    JScrollPane jScrollPane1 = new JScrollPane();}现在已经完成文本文件读取并显示内容了,可是我现在需要将现有代码功能改成 :在现有基础上(读取文本文件并显示内容)增加可以对所读取的文本文件进行修改的功能请各位大能指点小弟迷津
      

  11.   

    发现越来越像记事本了。
    提供两个思路
    键盘监听器按trc+s 时执行保存操作。KeyAdapter 或者 KeyListener
    或者另外设置一个按钮。
    点击执行保存操作。这个是ActionListener接着是保存操作的问题:
    把JTextArea的文本重新覆盖掉原文件。用到输出流。
      

  12.   

    我觉得思路应该是这样的:把文本文档中的内容读出来,至于显示嘛,应该要一个控件,随便你选了,JTextArea、JLabel应该都可以的,把读出来的内容显示在控件里面就行了!具体的代码应该很简单吧.
      

  13.   

    jdk的Demo有个Notepad示例,完整规范的源代码,好好使用Demo吧