开发一种能对文本中的一段进行简单统计计算的工具。该程序应该有一个滚动文本块窗口和一个状态栏的窗口。这个窗口应该是一个边界被标明的面板,拥有可以显示文本窗口里的字词数量和单个字长度的标记区段,你也可以对其他方面进行统计。这状态栏应该有一个按钮,当你按这按钮时,文本的内容将被从新统计。
除了字与字之间的空白处外,在文本格式中只能使用的标点符号是逗号和句号。
应该只是简单的字数统计与输入校验,因为我不太会用swing做,所以第一次做出来的排版相当难看...
只要能实现以上功能,并且界面表太难看,马上结帖给分!或者能提供该SWING界面的简单操作方法也行~~~~做好后发到[email protected]信箱,时间较紧~KKK
分数不够,继续开贴加~~总共200分~

解决方案 »

  1.   

    ...其实基本功能实现了,但SWING这里我做不好~~所以只要界面就行了的
      

  2.   

    其实就是一个文本框,一个按钮,一个LABEL
    文本框里有输入限制,只能输入字母,逗号与句号
    然后点下按钮,统计里面一共有多少字,用LABEL显示只是现在的swing界面是十字格分的,太难看了...谁能提供上面代码的话立马放分啊~~
      

  3.   

    好像有一个叫richedit的java的开源包
    名字我记不太清了,反正就叫什么edit的,你自己去找找
      

  4.   

    哦哦~~我现在是用JTextArea,反正只要.length就行了~:)然后在INPUT时候加个校验,唉~~做出来界面奇丑,不忍了..不过只要一个JAVA文件就能搞定的说
      

  5.   

    还行吧?import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.LineBorder;public class StatTextPane extends JPanel {
    public static void main(String[] args) {
    JFrame fr = new JFrame();
    fr.setDefaultCloseOperation(
    JFrame.EXIT_ON_CLOSE);

    fr.getContentPane().add(new StatTextPane());
    fr.setPreferredSize(
    new Dimension(300, 200));

    fr.pack();
    fr.setVisible(true);
    }

    protected PlainTextPane editor;
    protected StatusBar statusBar;
    public StatTextPane () {
    setLayout(new BorderLayout());
    setBorder(
    new BevelBorder(BevelBorder.LOWERED));

    editor = new PlainTextPane();
    statusBar = new StatusBar();

    add(
    new JScrollPane(
    editor, 
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), 
    BorderLayout.CENTER);
    add(statusBar, BorderLayout.PAGE_END);
    }
    }
    class PlainTextPane extends JTextArea {
    public PlainTextPane() {
    // setBorder(
    // new LineBorder(Color.GRAY));
    }
    }class StatusBar extends JPanel {
    public StatusBar() {
    }
    }
      

  6.   

    加分package tl.exercise.text;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.SoftBevelBorder;public class StatTextPane extends JPanel {
    public static void main(String[] args) {
    JFrame fr = new JFrame();
    fr.setDefaultCloseOperation(
    JFrame.EXIT_ON_CLOSE);

    fr.getContentPane().add(new StatTextPane());
    fr.setPreferredSize(
    new Dimension(300, 200));

    fr.pack();

    fr.setLocation(300, 300);
    fr.setVisible(true);
    }

    protected PlainTextPane editor;
    protected StatusBar statusBar;
    public StatTextPane () {
    setLayout(new BorderLayout());
    // setBorder(
    // new BevelBorder(BevelBorder.LOWERED));
    // setBorder(
    // new LineBorder(Color.GRAY));

    editor = new PlainTextPane();
    statusBar = new StatusBar();

    add(
    new JScrollPane(
    editor, 
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), 
    BorderLayout.CENTER);
    add(statusBar, BorderLayout.PAGE_END);

    statusBar.addIndicator(new JLabel("Hello"));
    statusBar.addIndicator(new JLabel("Good"));
    statusBar.addIndicator(new JButton("haha"));
    }
    }
    class PlainTextPane extends JTextArea {
    public PlainTextPane() {
    setBorder(
    new BevelBorder(BevelBorder.LOWERED));
    }
    }class StatusBar extends JPanel {
    JPanel workspace;
    JComponent notice;
    public StatusBar() {
    workspace  = new JPanel();
    workspace.setLayout(
    new BoxLayout(workspace, BoxLayout.LINE_AXIS));
    //setLayout(new BorderLayout());
    //workspace.setMinimumSize(new Dimension(200, 50));
    //workspace.setAlignmentX(JComponent.RIGHT_ALIGNMENT);

    workspace.add(Box.createRigidArea(new Dimension(0, 20)) );
    // notice = (JComponent)Box.createHorizontalGlue();

    notice = new JComponent() {
    public Dimension getMinimumSize() {
    return new Dimension(50, 20);
    }
    };
    notice.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
    workspace.add(notice);
    //workspace.add(Box.createRigidArea(new Dimension(10, 0)) );
    //workspace.setBorder(new BevelBorder(BevelBorder.LOWERED));
    workspace.setBackground(Color.LIGHT_GRAY);
    setLayout(new BorderLayout());
    add(workspace, BorderLayout.CENTER);
    setBorder(new EmptyBorder(2,2,2,2));
    setBackground(Color.LIGHT_GRAY);
    //add(new JLabel(), BorderLayout.PAGE_END);
    }

    public void addIndicator(JComponent comp) {
    comp.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
    //comp.setBorder(new LineBorder(Color.GRAY));
    workspace.add(Box.createRigidArea(new Dimension(2,0)));
    workspace.add(comp);
    }
    }
      

  7.   

    public class StatTextPane extends JPanel {
    public static void main(String[] args) {
    JFrame fr = new JFrame();
    ...
    //如果加大,修改这句。
    //fr.setPreferredSize(
    // new Dimension(300, 200));
    fr.setPreferredSize(
    new Dimension(640, 480)); fr.pack(); // 居中显示
    Dimension screen = 
    java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    fr.setLocation(
    (screen.width - fr.getWidth()) / 2,
    (screen.height - fr.getHeight()) / 2); fr.setVisible(true);
    }
      

  8.   

    okay~~不过大小似乎是根据JTextArea的,我又设了下TextArea的cols rows才能改变大小... 否则只有很小一条~~接分~~我再开一贴+100分给你~~麻烦再贴下注释实现逻辑~~好让我学习下~~谢谢!