java程序设计课程 大型实验 - 记事本

   1:  package j_201126100207;
   2:   
   3:  import java.awt.*;
   4:  import java.awt.event.*;
   5:  import static java.awt.event.InputEvent.*;
   6:  import java.io.BufferedReader;
   7:  import java.io.BufferedWriter;
   8:  import java.io.File;
   9:  import java.io.FileReader;
  10:  import java.io.FileWriter;
  11:  import java.io.IOException;
  12:  import javax.swing.*;
  13:  import javax.swing.event.*;
  14:  import javax.swing.filechooser.FileFilter;
  15:   
  16:  public class J_201126100207 extends JFrame {
  17:   
  18:      public final static String imagePath = "image/";
  19:      public final static Icon NEW24 = new ImageIcon(imagePath + "New24.gif", "new");
  20:      public final static Icon OPEN24 = new ImageIcon(imagePath + "Open24.gif", "open");
  21:      public final static Icon SAVE24 = new ImageIcon(imagePath + "Save24.gif", "save");
  22:      //内部成员;
  23:      private JFileChooser choose;
  24:      private File selectedFile = null;
  25:      private JTextArea textarea;
  26:      private boolean newPage = false;
  27:      private Font font;
  28:  //===========================================================================================================
  29:   
  30:      public J_201126100207(String title) {
  31:          Container content = getContentPane();
  32:          setTitle(title);
  33:          super.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  34:   
  35:          JMenuBar mb = new JMenuBar();
  36:          setJMenuBar(mb);
  37:   
  38:          //菜单栏标题及内容设置
  39:          JMenu fileMenu = new JMenu("文件(F)");
  40:          mb.add(fileMenu);
  41:          fileMenu.setMnemonic('F');
  42:          JMenu javaTest = new JMenu("Java上机题目");
  43:          mb.add(javaTest);
  44:          JMenu communication = new JMenu("通讯录(C)");
  45:          mb.add(communication);
  46:          communication.setMnemonic('C');
  47:          JMenu help = new JMenu("帮助(H)");
  48:          mb.add(help);
  49:          help.setMnemonic('H');
  50:          //文件一栏的菜单
  51:          JMenuItem newItem = new JMenuItem("新建(N)");
  52:          fileMenu.add(newItem);
  53:          JMenuItem openItem = new JMenuItem("打开(O)...");
  54:          fileMenu.add(openItem);
  55:          JMenuItem saveItem = new JMenuItem("保存(S)");
  56:          fileMenu.add(saveItem);
  57:          fileMenu.addSeparator();
  58:          JMenuItem fontColorItem = new JMenuItem("字体与颜色(F)...");
  59:          fileMenu.add(fontColorItem);
  60:          fileMenu.addSeparator();
  61:          JMenuItem exitItem = new JMenuItem("退出(X)");
  62:          fileMenu.add(exitItem);
  63:          //Java上机题目一栏的菜单
  64:          JMenuItem repreatItem = new JMenuItem("回文数(H)...");
  65:          javaTest.add(repreatItem);
  66:          JMenuItem translationItem = new JMenuItem("数字与英语互译(T)...");
  67:          javaTest.add(translationItem);
  68:          JMenuItem countItem = new JMenuItem("统计英文数据(C)...");
  69:          javaTest.add(countItem);
  70:          JMenuItem sumItem = new JMenuItem("文本文件求和(M)...");
  71:          javaTest.add(sumItem);
  72:          //通讯录一栏的菜单
  73:          JMenuItem maintainItem = new JMenuItem("通讯维护(W)...");
  74:          communication.add(maintainItem);
  75:          communication.addSeparator();
  76:          JMenuItem setupItem = new JMenuItem("通讯录存储文件设置(L)...");
  77:          communication.add(setupItem);
  78:          JMenuItem aboutItem = new JMenuItem("关于(G)...");
  79:          help.add(aboutItem);
  80:   
  81:          //设置textArea:添加滚动条,设置默认字体,及背景颜色
  82:          textarea = new JTextArea();
  83:          JScrollPane scorl = new JScrollPane(textarea);
  84:          content.add(scorl);
  85:          //font= new Font("宋体", Font.PLAIN, 14);
  86:          textarea.setFont(font);
  87:          //toolbar组件定义
  88:          JToolBar toolBar = new JToolBar();
  89:          JButton newButton = new JButton(NEW24);
  90:          newButton.setToolTipText("新建文件");
  91:          JButton openButton = new JButton(OPEN24);
  92:          openButton.setToolTipText("打开文件");
  93:          JButton saveButton = new JButton(SAVE24);
  94:          saveButton.setToolTipText("保存文件");
  95:          toolBar.add(newButton);
  96:          toolBar.add(openButton);
  97:          toolBar.add(saveButton);
  98:          toolBar.setFloatable(false);
  99:   
 100:          JPanel pane = new JPanel();
 101:          BorderLayout bord = new BorderLayout();
 102:          pane.setLayout(bord);
 103:          pane.add("North", toolBar);
 104:          pane.add("Center", scorl);
 105:          content.add(pane);
 106:          //快捷键设置
 107:          newItem.setAccelerator(KeyStroke.getKeyStroke('N', CTRL_DOWN_MASK));
 108:          openItem.setAccelerator(KeyStroke.getKeyStroke('O', CTRL_DOWN_MASK));
 109:          saveItem.setAccelerator(KeyStroke.getKeyStroke('S', CTRL_DOWN_MASK));
 110:          fontColorItem.setAccelerator(KeyStroke.getKeyStroke('F', CTRL_DOWN_MASK));
 111:          exitItem.setAccelerator(KeyStroke.getKeyStroke('X', CTRL_DOWN_MASK));
 112:          repreatItem.setAccelerator(KeyStroke.getKeyStroke('H', CTRL_DOWN_MASK));
 113:          translationItem.setAccelerator(KeyStroke.getKeyStroke('T', CTRL_DOWN_MASK));
 114:          countItem.setAccelerator(KeyStroke.getKeyStroke('C', CTRL_DOWN_MASK));
 115:          sumItem.setAccelerator(KeyStroke.getKeyStroke('M', CTRL_DOWN_MASK));
 116:          maintainItem.setAccelerator(KeyStroke.getKeyStroke('W', CTRL_DOWN_MASK));
 117:          setupItem.setAccelerator(KeyStroke.getKeyStroke('L', CTRL_DOWN_MASK));
 118:          aboutItem.setAccelerator(KeyStroke.getKeyStroke('G', CTRL_DOWN_MASK));
 119:   
 120:  //===================================================================================================================       
 121:          //事件处理:
 122:          //窗口关闭
 123:          addWindowListener(new WindowAdapter() {
 124:              @Override
 125:              public void windowClosing(WindowEvent event) {
 126:                  if (selectedFile == null && textarea.getText().equals("")) {
 127:                      int retuenValue = JOptionPane.showConfirmDialog(null, " 确定要退出系统吗?", "是否退出", JOptionPane.YES_NO_OPTION);
 128:                      if (retuenValue == JOptionPane.YES_OPTION) {
 129:                          System.exit(0);
 130:                      }
 131:                  } else {
 132:                      int btn = JOptionPane.showConfirmDialog(null, "是否保存到"
 133:                              + selectedFile + "?", "是否保存",
 134:                              JOptionPane.YES_NO_CANCEL_OPTION);
 135:                      if (btn == JOptionPane.CANCEL_OPTION) {
 136:                      } else if (btn == JOptionPane.NO_OPTION) {
 137:                          System.exit(0);
 138:                      } else {
 139:                          if (selectedFile == null
 140:                                  && !textarea.getText().equals("")) {
 141:                              choose = new JFileChooser();
 142:                              int state = choose.showSaveDialog(J_201126100207.this);
 143:                              if (state == JFileChooser.APPROVE_OPTION) {
 144:                                  try {
 145:                                      File file = choose.getSelectedFile();
 146:                                      BufferedWriter bw = new BufferedWriter(
 147:                                              new FileWriter(file));
 148:                                      String str = textarea.getText();
 149:                                      String[] lines = str.split("\n");
 150:                                      for (String line : lines) {
 151:                                          bw.write(line + "\r\n");
 152:                                      }
 153:                                      bw.flush();
 154:                                      file.createNewFile();
 155:                                      bw.close();
 156:                                  } catch (IOException e) {
 157:                                      JOptionPane.showConfirmDialog(null,
 158:                                              "保存文件失败!", "ERROR",
 159:                                              JOptionPane.ERROR_MESSAGE);
 160:                                  }
 161:                              }
 162:                              System.exit(0);
 163:                          } else if (selectedFile != null) {
 164:                              try {
 165:                                  BufferedWriter bw = new BufferedWriter(
 166:                                          new FileWriter(selectedFile));
 167:                                  String str = textarea.getText();
 168:                                  String[] lines = str.split("\n");
 169:                                  for (String line : lines) {
 170:                                      bw.write(line + "\r\n");
 171:                                  }
 172:                                  bw.flush();
 173:                                  bw.close();
 174:                              } catch (IOException e) {
 175:                              }
 176:                              System.exit(0);
 177:                          }
 178:                      }
 179:                  }
 180:              }
 181:          });
 182:   
 183:          //新建按钮
 184:          newItem.addActionListener(new ActionListener() {
 185:              @Override
 186:              public void actionPerformed(ActionEvent e) {
 187:                  if (selectedFile == null && textarea.getText().equals("")) {
 188:                      return;
 189:                  } else {
 190:                      int btn = JOptionPane.showConfirmDialog(J_201126100207.this, "是否保存到...?", "是否保存", JOptionPane.YES_NO_CANCEL_OPTION);
 191:                      if (btn == JOptionPane.CANCEL_OPTION) {
 192:                          return;
 193:                      } else if (btn == JOptionPane.YES_OPTION) {
 194:                          if (!textarea.getText().equals("")) {
 195:                              JFileChooser choose = new JFileChooser();
 196:                              int state = choose.showSaveDialog(J_201126100207.this);
 197:                              if (state == JFileChooser.APPROVE_OPTION) {
 198:                                  try {
 199:                                      File file = choose.getSelectedFile();
 200:                                      BufferedWriter bw = new BufferedWriter(new FileWriter(file));
 201:                                      String str = textarea.getText();
 202:                                      String[] lines = str.split("\n");
 203:                                      for (String line : lines) {
 204:                                          bw.write(line + "\r\n");
 205:                                      }
 206:                                      bw.flush();
 207:                                      file.createNewFile();
 208:                                      bw.close();
 209:   
 210:                                  } catch (IOException ex) {
 211:                                      JOptionPane.showConfirmDialog(J_201126100207.this,
 212:                                              "保存文件失败!", "ERROR",
 213:                                              JOptionPane.ERROR_MESSAGE);
 214:                                  }
 215:                              }
 216:                          }
 217:                      }
 218:                  }
 219:                  textarea.setText("");//清空textarea中的内容;
 220:   
 221:              }
 222:          });
 223:          newButton.addActionListener(new ActionListener() {
 224:              @Override
 225:              public void actionPerformed(ActionEvent e) {
 226:                  if (selectedFile == null && textarea.getText().equals("")) {
 227:                      return;
 228:                  } else {
 229:                      int btn = JOptionPane.showConfirmDialog(J_201126100207.this, "是否保存到...?", "是否保存", JOptionPane.YES_NO_CANCEL_OPTION);
 230:                      if (btn == JOptionPane.CANCEL_OPTION) {
 231:                          return;
 232:                      } else if (btn == JOptionPane.YES_OPTION) {
 233:                          if (!textarea.getText().equals("")) {
 234:                              choose = new JFileChooser();
 235:                              int state = choose.showSaveDialog(J_201126100207.this);
 236:                              if (state == JFileChooser.APPROVE_OPTION) {
 237:                                  try {
 238:                                      File file = choose.getSelectedFile();
 239:                                      BufferedWriter bw = new BufferedWriter(new FileWriter(file));
 240:                                      String str = textarea.getText();
 241:                                      String[] lines = str.split("\n");
 242:                                      for (String line : lines) {
 243:                                          bw.write(line + "\r\n");
 244:                                      }
 245:                                      bw.flush();
 246:                                      file.createNewFile();
 247:                                      bw.close();
 248:                                  } catch (IOException ex) {
 249:                                      JOptionPane.showConfirmDialog(J_201126100207.this,
 250:                                              "保存文件失败!", "ERROR",
 251:                                              JOptionPane.ERROR_MESSAGE);
 252:                                  }
 253:                              }
 254:                          }
 255:                      }
 256:                  }
 257:                  textarea.setText("");//清空textarea中的内容;
 258:              }
 259:          });
 260:   
 261:   
 262:          //打开按钮
 263:          openItem.addActionListener(new ActionListener() {
 264:              @Override
 265:              public void actionPerformed(ActionEvent e) {
 266:                  if (selectedFile == null && textarea.getText().equals("")) {
 267:                  } else {
 268:                      int btn = JOptionPane.showConfirmDialog(J_201126100207.this,
 269:                              "是否保存到...?", "是否保存",
 270:                              JOptionPane.YES_NO_CANCEL_OPTION);
 271:                      if (btn == JOptionPane.CANCEL_OPTION) {
 272:                          return;
 273:                      } else if (btn == JOptionPane.YES_OPTION) {
 274:                      }
 275:                  }
 276:                  choose = new JFileChooser();
 277:                  choose.addChoosableFileFilter(new fileFilter("java"));
 278:                  choose.addChoosableFileFilter(new fileFilter("txt"));
 279:                  choose.addChoosableFileFilter(new fileFilter("cpp"));
 280:                  int state = choose.showOpenDialog(J_201126100207.this);
 281:                  if (state == JFileChooser.APPROVE_OPTION) {
 282:                      try {
 283:                          selectedFile = choose.getSelectedFile();
 284:                          BufferedReader br = new BufferedReader(new FileReader(selectedFile));
 285:                          textarea.read(br, "");
 286:                          br.close();
 287:                      } catch (IOException ex) {
 288:                          JOptionPane.showConfirmDialog(J_201126100207.this,
 289:                                  "打开文件失败", "error",
 290:                                  JOptionPane.ERROR_MESSAGE);
 291:                      }
 292:                  }
 293:              }
 294:          });
 295:   
 296:          //打开图标
 297:          openButton.addActionListener(new ActionListener() {
 298:              @Override
 299:              public void actionPerformed(ActionEvent e) {
 300:                  if (selectedFile == null && textarea.getText().equals("")) {
 301:                  } else {
 302:                      int btn = JOptionPane.showConfirmDialog(J_201126100207.this,
 303:                              "是否保存到...?", "是否保存",
 304:                              JOptionPane.YES_NO_CANCEL_OPTION);
 305:                      if (btn == JOptionPane.CANCEL_OPTION) {
 306:                          return;
 307:                      } else if (btn == JOptionPane.YES_OPTION) {
 308:                      }
 309:                  }
 310:                  choose = new JFileChooser();
 311:                  choose.addChoosableFileFilter(new fileFilter("java"));
 312:                  choose.addChoosableFileFilter(new fileFilter("txt"));
 313:                  choose.addChoosableFileFilter(new fileFilter("cpp"));
 314:                  int state = choose.showOpenDialog(J_201126100207.this);
 315:                  if (state == JFileChooser.APPROVE_OPTION) {
 316:                      try {
 317:                          selectedFile = choose.getSelectedFile();
 318:                          BufferedReader br = new BufferedReader(new FileReader(selectedFile));
 319:                          textarea.read(br, "");
 320:                          br.close();
 321:                      } catch (IOException ex) {
 322:                          JOptionPane.showConfirmDialog(J_201126100207.this,
 323:                                  "打开文件失败", "error",
 324:                                  JOptionPane.ERROR_MESSAGE);
 325:                      }
 326:                  }
 327:              }
 328:          });
 329:   
 330:          //保存按钮
 331:          saveItem.addActionListener(new ActionListener() {
 332:              @Override
 333:              public void actionPerformed(ActionEvent event) {
 334:                  if (newPage == true || selectedFile == null) {
 335:                      choose = new JFileChooser();
 336:                      int state = choose.showSaveDialog(J_201126100207.this);
 337:                      if (state == JFileChooser.APPROVE_OPTION) {
 338:                          try {
 339:                              File file = choose.getSelectedFile();
 340:                              BufferedWriter bw = new BufferedWriter(
 341:                                      new FileWriter(file));
 342:                              String str = textarea.getText();
 343:                              String[] lines = str.split("\n");
 344:                              for (String line : lines) {
 345:                                  bw.write(line + "\r\n");
 346:                              }
 347:                              bw.flush();
 348:                              file.createNewFile();
 349:                              bw.close();
 350:                              newPage = false;
 351:                              selectedFile = file;
 352:                          } catch (IOException e) {
 353:                              JOptionPane.showMessageDialog(J_201126100207.this, "保存文件失败",
 354:                                      "ERROR", JOptionPane.ERROR_MESSAGE);
 355:                          }
 356:                      }
 357:                  } else if (newPage == false && selectedFile != null) {
 358:   
 359:                      try {
 360:                          BufferedWriter bw = new BufferedWriter(new FileWriter(
 361:                                  selectedFile));
 362:                          String str = textarea.getText();
 363:                          String[] lines = str.split("\n");
 364:                          for (String line : lines) {
 365:                              bw.write(line + "\r\n");
 366:                          }
 367:                          bw.flush();
 368:                          bw.close();
 369:                          newPage = false;
 370:                      } catch (IOException e) {
 371:                          JOptionPane.showMessageDialog(J_201126100207.this, "保存文件失败",
 372:                                  "ERROR", JOptionPane.ERROR_MESSAGE);
 373:                      }
 374:                  }
 375:              }
 376:          });
 377:          //保存图标
 378:          saveButton.addActionListener(new ActionListener() {
 379:              @Override
 380:              public void actionPerformed(ActionEvent event) {
 381:                  if (newPage == true || selectedFile == null) {
 382:                      choose = new JFileChooser();
 383:                      int state = choose.showSaveDialog(J_201126100207.this);
 384:                      if (state == JFileChooser.APPROVE_OPTION) {
 385:                          try {
 386:                              File file = choose.getSelectedFile();
 387:                              BufferedWriter bw = new BufferedWriter(
 388:                                      new FileWriter(file));
 389:                              String str = textarea.getText();
 390:                              String[] lines = str.split("\n");
 391:                              for (String line : lines) {
 392:                                  bw.write(line + "\r\n");
 393:                              }
 394:                              bw.flush();
 395:                              file.createNewFile();
 396:                              bw.close();
 397:                              newPage = false;
 398:                              selectedFile = file;
 399:                          } catch (IOException e) {
 400:                              JOptionPane.showMessageDialog(J_201126100207.this, "保存文件失败",
 401:                                      "ERROR", JOptionPane.ERROR_MESSAGE);
 402:                          }
 403:                      }
 404:                  } else if (newPage == false && selectedFile != null) {
 405:   
 406:                      try {
 407:                          BufferedWriter bw = new BufferedWriter(new FileWriter(
 408:                                  selectedFile));
 409:                          String str = textarea.getText();
 410:                          String[] lines = str.split("\n");
 411:                          for (String line : lines) {
 412:                              bw.write(line + "\r\n");
 413:                          }
 414:                          bw.flush();
 415:                          bw.close();
 416:                          newPage = false;
 417:                      } catch (IOException e) {
 418:                          JOptionPane.showMessageDialog(J_201126100207.this, "保存文件失败",
 419:                                  "ERROR", JOptionPane.ERROR_MESSAGE);
 420:                      }
 421:                  }
 422:              }
 423:          });
 424:          //字体颜色设置
 425:          fontColorItem.addActionListener(new ActionListener() {
 426:              @Override
 427:              public void actionPerformed(ActionEvent e) {
 428:                  FontDialog fontdialog = new FontDialog(J_201126100207.this);
 429:   
 430:   
 431:              }
 432:          });
 433:   
 434:          exitItem.addActionListener(new ActionListener() {
 435:              @Override
 436:              public void actionPerformed(ActionEvent event) {
 437:                  if (selectedFile == null && textarea.getText().equals("")) {
 438:                      int retuenValue = JOptionPane.showConfirmDialog(null, " 确定要退出系统吗?", "是否退出", JOptionPane.YES_NO_OPTION);
 439:                      if (retuenValue == JOptionPane.YES_OPTION) {
 440:                          System.exit(0);
 441:                      }
 442:                  } else {
 443:                      int btn = JOptionPane.showConfirmDialog(null, "是否保存到"
 444:                              + selectedFile + "?", "是否保存",
 445:                              JOptionPane.YES_NO_CANCEL_OPTION);
 446:                      if (btn == JOptionPane.CANCEL_OPTION) {
 447:                          return;
 448:                      } else if (btn == JOptionPane.NO_OPTION) {
 449:                          System.exit(0);
 450:                      } else {
 451:                          if (selectedFile == null
 452:                                  && !textarea.getText().equals("")) {
 453:                              choose = new JFileChooser();
 454:                              int state = choose.showSaveDialog(J_201126100207.this);
 455:                              if (state == JFileChooser.APPROVE_OPTION) {
 456:                                  try {
 457:                                      File file = choose.getSelectedFile();
 458:                                      BufferedWriter bw = new BufferedWriter(
 459:                                              new FileWriter(file));
 460:                                      String str = textarea.getText();
 461:                                      String[] lines = str.split("\n");
 462:                                      for (String line : lines) {
 463:                                          bw.write(line + "\r\n");
 464:                                      }
 465:                                      bw.flush();
 466:                                      file.createNewFile();
 467:                                      bw.close();
 468:                                  } catch (IOException e) {
 469:                                      JOptionPane.showConfirmDialog(null,
 470:                                              "保存文件失败!", "ERROR",
 471:                                              JOptionPane.ERROR_MESSAGE);
 472:                                  }
 473:                              }
 474:                              System.exit(0);
 475:                          } else if (selectedFile != null) {
 476:                              try {
 477:                                  BufferedWriter bw = new BufferedWriter(
 478:                                          new FileWriter(selectedFile));
 479:                                  String str = textarea.getText();
 480:                                  String[] lines = str.split("\n");
 481:                                  for (String line : lines) {
 482:                                      bw.write(line + "\r\n");
 483:                                  }
 484:                                  bw.flush();
 485:                                  bw.close();
 486:                              } catch (IOException e) {
 487:                              }
 488:                              System.exit(0);
 489:                          }
 490:                      }
 491:                  }
 492:              }
 493:          });
 494:   
 495:          repreatItem.addActionListener(new ActionListener() {
 496:              @Override
 497:              public void actionPerformed(ActionEvent event) {
 498:                  repreatDialog repreat = new repreatDialog(J_201126100207.this);
 499:              }
 500:          });
 501:   
 502:          translationItem.addActionListener(new ActionListener() {
 503:              @Override
 504:              public void actionPerformed(ActionEvent event) {
 505:                  translateDialog translation = new translateDialog(J_201126100207.this);
 506:              }
 507:          });
 508:   
 509:   
 510:          countItem.addActionListener(new ActionListener() {
 511:              @Override
 512:              public void actionPerformed(ActionEvent event) {
 513:                  countDialog CountDialog = new countDialog(J_201126100207.this);
 514:   
 515:              }
 516:          });
 517:   
 518:          sumItem.addActionListener(new ActionListener() {
 519:              @Override
 520:              public void actionPerformed(ActionEvent event) {
 521:                  sumDialog sum = new sumDialog(J_201126100207.this);
 522:              }
 523:          });
 524:   
 525:          //关于按钮
 526:          aboutItem.addActionListener(new ActionListener() {
 527:              @Override
 528:              public void actionPerformed(ActionEvent e) {
 529:                  JOptionPane.showMessageDialog(J_201126100207.this, "Java记事本" + "\n"
 530:                          + "designed by 姜楠\n" + " in ZJUT", "关于",
 531:                          JOptionPane.INFORMATION_MESSAGE);
 532:              }
 533:          });
 534:   
 535:      }
 536:  //================================================================================================================
 537:   
 538:      /**
 539:       * 内部类定义以及实现
 540:       */
 541:      private class FontDialog extends JDialog implements ActionListener, ItemListener {
 542:   
 543:          private JButton fontColorButton;
 544:          private JButton backGroundButton;
 545:          private JButton okButton;
 546:          private JButton cancelButton;
 547:          private String fontName;
 548:          private int fontSize;
 549:          private Font font;
 550:          private JComboBox nameCombo;
 551:          private JComboBox sizeCombo;
 552:          private JLabel fontDisplay;
 553:   
 554:          public FontDialog(J_201126100207 window) {
 555:              GridLayout grid = new GridLayout(6, 2);
 556:              setLayout(grid);
 557:              setModal(true);
 558:              setTitle("设置颜色与字体");
 559:   
 560:              font = textarea.getFont();
 561:              fontName = font.getFontName();
 562:              fontSize = font.getSize();
 563:   
 564:              //获取所有的字体
 565:              GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
 566:              String[] fontNames = ge.getAvailableFontFamilyNames();
 567:              nameCombo = new JComboBox(fontNames);
 568:              nameCombo.addItemListener(this);
 569:   
 570:              //创建和添加组件到FontDialog
 571:              JLabel nameLabel = new JLabel("字体名称");
 572:              add(nameLabel);
 573:              add(nameCombo);
 574:   
 575:              JLabel sizeLabel = new JLabel("字体大小");
 576:              String[] size = {"8", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32", "34", "42", "52", "62", "72"};
 577:              sizeCombo = new JComboBox(size);
 578:              sizeCombo.addItemListener(this);
 579:              add(sizeLabel);
 580:              add(sizeCombo);
 581:   
 582:              JLabel fontLabel = new JLabel("字体颜色");
 583:              fontColorButton = new JButton("设置...");
 584:              fontColorButton.addActionListener(this);
 585:              add(fontLabel);
 586:              add(fontColorButton);
 587:              JLabel backGroundLabel = new JLabel("背景颜色");
 588:              backGroundButton = new JButton("设置...");
 589:              backGroundButton.addActionListener(this);
 590:              add(backGroundLabel);
 591:              add(backGroundButton);
 592:              JLabel displayLabel = new JLabel("字体预览");
 593:              fontDisplay = new JLabel("Java 字体预览");
 594:              fontDisplay.setFont(font);
 595:              JPanel displayPanel = new JPanel(true);
 596:              displayPanel.setBackground(Color.WHITE);
 597:              displayPanel.add(fontDisplay);
 598:              add(displayLabel);
 599:   
 600:              add(displayPanel);
 601:              okButton = new JButton("确定");
 602:              okButton.addActionListener(this);
 603:              cancelButton = new JButton("取消");
 604:              cancelButton.addActionListener(this);
 605:              add(okButton);
 606:              add(cancelButton);
 607:              setSize(600, 300);
 608:              setLocationRelativeTo(window);
 609:              setVisible(true);
 610:          }
 611:   
 612:          @Override
 613:          public void itemStateChanged(ItemEvent e) {
 614:              if (e.getStateChange() == ItemEvent.SELECTED) {
 615:                  if (e.getSource() == nameCombo) {
 616:                      fontName = (String) nameCombo.getSelectedItem();
 617:                  } else if (e.getSource() == sizeCombo) {
 618:                      fontSize = Integer.parseInt(sizeCombo.getSelectedItem().toString());
 619:                  }
 620:                  font = new Font(fontName, font.PLAIN, fontSize);
 621:                  fontDisplay.setFont(font);
 622:                  fontDisplay.repaint();
 623:              }
 624:          }
 625:   
 626:          @Override
 627:          public void actionPerformed(ActionEvent e) {
 628:              if (e.getSource() == fontColorButton) {
 629:                  Color color = JColorChooser.showDialog(null, "选择字体颜色", getBackground());
 630:                  textarea.setForeground(color);
 631:              } else if (e.getSource() == backGroundButton) {
 632:                  Color color = JColorChooser.showDialog(null, "选择背景颜色", getBackground());
 633:                  textarea.setForeground(color);
 634:              } else if (e.getSource() == okButton) {
 635:                  textarea.setFont(font);               // Set the selected font
 636:                  setVisible(false);
 637:              } else if (e.getSource() == cancelButton) {
 638:                  setVisible(false);
 639:              }
 640:          }
 641:      }
 642:   
 643:  //================================================================================================================
 644:      private class fileFilter extends FileFilter {
 645:   
 646:          String ext;
 647:   
 648:          public fileFilter(String ext) {
 649:              this.ext = ext;
 650:          }
 651:   
 652:          @Override
 653:          public boolean accept(File file) {
 654:              String name = file.getName().toLowerCase();
 655:              if (name.endsWith(ext) || file.isDirectory()) {
 656:                  return true;
 657:              } else {
 658:                  return false;
 659:              }
 660:          }
 661:   
 662:          @Override
 663:          public String getDescription() {
 664:              if (ext.equals("java")) {
 665:                  return "*.java";
 666:              } else if (ext.equals("txt")) {
 667:                  return "*.txt";
 668:              } else if (ext.equals("cpp")) {
 669:                  return "*.cpp";
 670:              }
 671:              return "";
 672:          }
 673:      }
 674:  //================================================================================================================
 675:   
 676:      private class countDialog extends JDialog implements ActionListener {
 677:   
 678:          JLabel label1, label2, label3;
 679:          JTextField textField1, textField2, textField3;
 680:          JButton okButton;
 681:          JButton cancelButton;
 682:   
 683:          public countDialog(J_201126100207 window) {
 684:              GridLayout grid = new GridLayout(4, 2);
 685:              setLayout(grid);
 686:              setModal(true);
 687:              setTitle("统计英文数据");
 688:   
 689:              label1 = new JLabel("以字母w 开头的单词数");
 690:              add(label1);
 691:              textField1 = new JTextField();
 692:              textField1.setEditable(false);
 693:              add(textField1);
 694:              label2 = new JLabel("含'or'字符串的单词数");
 695:              add(label2);
 696:              textField2 = new JTextField();
 697:              textField2.setEditable(false);
 698:              add(textField2);
 699:              label3 = new JLabel("长度为 3  的单词数");
 700:              add(label3);
 701:              textField3 = new JTextField();
 702:              textField3.setEditable(false);
 703:              add(textField3);
 704:              JPanel okPanel = new JPanel();
 705:              okButton = new JButton("确定");
 706:              okPanel.add(okButton);
 707:              okButton.addActionListener(this);
 708:              this.add(okPanel);
 709:              JPanel cancelPanel = new JPanel();
 710:              cancelButton = new JButton("退出");
 711:              cancelPanel.add(cancelButton);
 712:              cancelButton.addActionListener(this);
 713:              this.add(cancelPanel);
 714:   
 715:              int beginWithW = 0, includeOr = 0, lengthEqualToThree = 0;
 716:              String str = textarea.getText();
 717:              if (!str.equals("")) {
 718:                  String[] lines = str.split("\n");
 719:                  if (!lines.equals("")) {
 720:                      for (String line : lines) {
 721:                          String t[] = line.split(" ");
 722:                          for (String temp : t) {
 723:                              if (temp.charAt(0) == 'W' || temp.charAt(0) == 'w') {
 724:                                  beginWithW++;
 725:                              }
 726:                              if (temp.indexOf("or") != -1) {
 727:                                  includeOr++;
 728:                              }
 729:                              if (temp.length() == 3) {
 730:                                  lengthEqualToThree++;
 731:                              }
   
   1:                      }
   2:                  }
   3:              }
   4:              textField1.setText(String.valueOf(beginWithW));
   5:              textField2.setText(String.valueOf(includeOr));
   6:              textField3.setText(String.valueOf(lengthEqualToThree));
   7:              setSize(400, 200);
   8:              setLocationRelativeTo(window);
   9:              setVisible(true);
  10:          }
  11:   
  12:          @Override
  13:          public void actionPerformed(ActionEvent e) {
  14:              if (e.getSource() == okButton || e.getSource() == cancelButton) {
  15:                  this.setVisible(false);
  16:              }
  17:          }
  18:      }
  19:   
  20:      private class translateDialog extends JDialog implements ActionListener {
  21:   
  22:          JLabel cinLabel, coutLabel;
  23:          JTextField cinTextField, coutTextField;
  24:          JButton okButton;
  25:          JButton cancelButton;
  26:          String x[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
  27:          String y[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
  28:          String z[] = {"twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"};
  29:   
  30:          public translateDialog(J_201126100207 window) {
  31:              GridLayout grid = new GridLayout(3, 2);
  32:              setLayout(grid);
  33:              setModal(true);
  34:              setTitle("数字与英文互译");
  35:   
  36:              cinLabel = new JLabel("请输入一个不大于100的数字或英文:");
  37:              add(cinLabel);
  38:              cinTextField = new JTextField();
  39:              add(cinTextField);
  40:              coutLabel = new JLabel("显示翻译结果:");
  41:              add(coutLabel);
  42:              coutTextField = new JTextField();
  43:              coutTextField.setEditable(false);
  44:              add(coutTextField);
  45:   
  46:              JPanel okPanel = new JPanel();
  47:              okButton = new JButton("确定");
  48:              okPanel.add(okButton);
  49:              add(okPanel);
  50:              okButton.addActionListener(this);
  51:              JPanel cancelPanel = new JPanel();
  52:              cancelButton = new JButton("取消");
  53:              cancelPanel.add(cancelButton);
  54:              add(cancelPanel);
  55:              cancelButton.addActionListener(this);
  56:   
  57:              setSize(500, 150);
  58:              setLocationRelativeTo(window);
  59:              setVisible(true);
  60:          }
  61:   
  62:          @Override
  63:          public void actionPerformed(ActionEvent e) {
  64:              if (e.getSource() == okButton) {
  65:                  String str = cinTextField.getText();
  66:                  String trim = str.trim();
  67:                  if (trim.equals("")) {
  68:                      JOptionPane.showMessageDialog(translateDialog.this, "未按要求输入,请重新输入",
  69:                              "错误", JOptionPane.ERROR_MESSAGE);
  70:                  } else {
  71:                      if (trim.charAt(0) <= '9' && trim.charAt(0) >= '0') {
  72:                          int temp = Integer.parseInt(trim);
  73:                          String s = null;
  74:                          if (temp <= 9) {
  75:                              s = x[temp];
  76:                          }
  77:                          if (temp >= 10 && temp <= 19) {
  78:                              s = y[temp - 10];
  79:                          } else if(temp>=20 && temp<=99){
  80:                              s = z[temp / 10 - 2];
  81:                              if (temp % 10 != 0) {
  82:                                  s += " " + x[temp % 10];
  83:                              }
  84:                          }
  85:                          coutTextField.setText(s);
  86:                      } 
  87:                      else {
  88:                          int answer = 0;
  89:                          String[] part = trim.split(" ");
  90:                          for (int i = 0; i < part.length; i++) {
  91:                              if (!part[i].equals("")) {
  92:                                  for (int j = 0; j < x.length; j++) {
  93:                                      if(part[i].equals(x[j])){
  94:                                          answer+=j+1;
  95:                                      }
  96:                                  }
  97:                                  for (int j = 0; j < y.length; j++) {
  98:                                      if(part[i].equals(y[j])){
  99:                                          answer+=j+10;
 100:                                      }
 101:                                  }
 102:                                  for (int j = 0; j < z.length; j++) {
 103:                                      if(part[i].equals(z[j])){
 104:                                          answer+=(j+2)*10;
 105:                                      }
 106:                                  }
 107:                              }
 108:                          }
 109:                         coutTextField.setText(String.valueOf(answer));
 110:                      }
 111:   
 112:                  }
 113:              } else if (e.getSource() == cancelButton) {
 114:                  this.setVisible(false);
 115:              }
 116:   
 117:          }
 118:      }
 119:   
 120:      private class repreatDialog extends JDialog implements ActionListener {
 121:   
 122:          JLabel cinLabel;
 123:          JTextField cinTextField;
 124:          JButton judgeButton;
 125:          JButton cancelButton;
 126:   
 127:          public repreatDialog(J_201126100207 window) {
 128:              GridLayout grid = new GridLayout(2, 2);
 129:              setLayout(grid);
 130:              setModal(true);
 131:              setTitle("回文数");
 132:   
 133:              cinLabel = new JLabel("输入1-99999之间的整数:");
 134:              add(cinLabel);
 135:              cinTextField = new JTextField();
 136:              add(cinTextField);
 137:              JPanel judgePanel = new JPanel();
 138:              judgeButton = new JButton("判断是否是回文数?");
 139:              judgePanel.add(judgeButton);
 140:              add(judgePanel);
 141:              judgeButton.addActionListener(this);
 142:              JPanel cancelPanel = new JPanel();
 143:              cancelButton = new JButton("取消");
 144:              cancelPanel.add(cancelButton);
 145:              add(cancelPanel);
 146:              cancelButton.addActionListener(this);
 147:   
 148:              setSize(400, 100);
 149:              setLocationRelativeTo(window);
 150:              setVisible(true);
 151:          }
 152:   
 153:          private boolean isLegal(String s) {
 154:              if (s.length() > 5) {
 155:                  return false;
 156:              } else {
 157:                  for (int i = 0; i < s.length(); i++) {
 158:                      if (s.charAt(i) > '9' || s.charAt(i) < '0') {
 159:                          return false;
 160:                      }
 161:                  }
 162:              }
 163:              return true;
 164:          }
 165:   
 166:          private boolean isReverse(String s) {
 167:              for (int i = 0; i < s.length(); i++) {
 168:                  if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
 169:                      return false;
 170:                  }
 171:              }
 172:              return true;
 173:          }
 174:   
 175:          @Override
 176:          public void actionPerformed(ActionEvent e) {
 177:              if (e.getSource() == judgeButton) {
 178:                  String str = cinTextField.getText();
 179:                  if (str.equals("")) {
 180:                      JOptionPane.showMessageDialog(repreatDialog.this, "未按要求输入,请重新输入",
 181:                              "错误", JOptionPane.ERROR_MESSAGE);
 182:                  } else if (isLegal(str)) {
 183:                      if (isReverse(str)) {
 184:                          JOptionPane.showMessageDialog(repreatDialog.this, str+"是回文数",
 185:                                  "确认", JOptionPane.INFORMATION_MESSAGE);
 186:                      } else {
 187:                          JOptionPane.showMessageDialog(repreatDialog.this, str+"不是回文数",
 188:                                  "确认", JOptionPane.INFORMATION_MESSAGE);
 189:                      }
 190:                  }
 191:                  cinTextField.setText("");
 192:   
 193:              } else if (e.getSource() == cancelButton) {
 194:                  this.setVisible(false);
 195:              }
 196:          }
 197:      }
 198:   
 199:      private class sumDialog extends JDialog implements ActionListener, ChangeListener {
 200:   
 201:          JProgressBar progressBar;
 202:          JLabel sumLabel;
 203:          Timer timer;
 204:          JButton okButton;
 205:          int values = 0, number = 0, total = 0;
 206:          String[] lines, temp;
 207:   
 208:          public sumDialog(J_201126100207 window) {
 209:              GridLayout grid = new GridLayout(3, 1);
 210:              setLayout(grid);
 211:              setModal(true);
 212:              setTitle("文本文件求和");
 213:   
 214:              sumLabel = new JLabel("", JLabel.CENTER);
 215:              this.add(sumLabel);
 216:              progressBar = new JProgressBar();
 217:              progressBar.setOrientation(JProgressBar.HORIZONTAL);
 218:              progressBar.setMinimum(0);
 219:              progressBar.setMaximum(100);
 220:              progressBar.setValue(0);
 221:              progressBar.setStringPainted(true);
 222:              progressBar.addChangeListener(this);
 223:              progressBar.setPreferredSize(new Dimension(200, 30));
 224:              progressBar.setBorderPainted(true);
 225:              this.add(progressBar);
 226:              timer = new Timer(5, this);
 227:              JPanel okPanel = new JPanel();
 228:              okButton = new JButton("开始计算");
 229:              okPanel.add(okButton);
 230:              add(okPanel);
 231:              okButton.addActionListener(this);
 232:              setSize(400, 200);
 233:              setLocationRelativeTo(window);
 234:              setVisible(true);
 235:          }
 236:   
 237:          @Override
 238:          public void actionPerformed(ActionEvent e) {
 239:              if (e.getSource() == okButton) {
 240:                  timer.start();
 241:                  number = 0;
 242:                  values = 0;
 243:                  String str = textarea.getText();
 244:                  lines = str.split("\n");
 245:                  for (int i = 0; i < lines.length; i++) {
 246:                      temp = lines[i].split(" ");
 247:                      for (int j = 0; j < temp.length; j++) {
 248:                          total++;
 249:                      }
 250:                  }
 251:                  for (int i = 0; i < lines.length; i++) {
 252:                      for (int j = 0; j < temp.length; j++, number++) {
 253:                          if (!temp[j].equals("")) {
 254:                              values += Integer.parseInt(temp[j]);
 255:                          }
 256:                      }
 257:                  }
 258:              } else if (e.getSource() == timer) {
 259:                  int value = progressBar.getValue();
 260:                  if (value < 100) {
 261:                      value = (int) 100 * number / total;
 262:                      progressBar.setValue(value);
 263:                  } else {
 264:                      timer.stop();
 265:                      JOptionPane.showMessageDialog(sumDialog.this, Integer.toString(values),
 266:                              "确认", JOptionPane.INFORMATION_MESSAGE);
 267:                      progressBar.setValue(0);
 268:                  }
 269:              }
 270:          }
 271:   
 272:          @Override
 273:          public void stateChanged(ChangeEvent e1) {
 274:              int value = progressBar.getValue();
 275:              if (e1.getSource() == progressBar) {
 276:                  sumLabel.setText("目前已完成进度:" + Integer.toString(value) + "%");
 277:              }
 278:          }
 279:      }
 280:  //================================================================================================================    
 281:   
 282:      //窗口居中函数
 283:      public static void centerWindow(Window f) {
 284:          Toolkit tk = f.getToolkit();
 285:          Dimension dm = tk.getScreenSize();
 286:          f.setLocation((int) (dm.getWidth() - f.getWidth()) / 2, (int) (dm.getHeight() - f.getHeight()) / 2);
 287:      }
 288:   
 289:      public static void main(String[] args) {
 290:          JFrame fr = new J_201126100207("201126100207-姜楠-Java 程序设计综合实验");
 291:          fr.setSize(1000, 500);
 292:          centerWindow(fr);
 293:          fr.setVisible(true);
 294:      }
 295:  }
posted @ 2013-02-06 19:51  姜楠  阅读(1742)  评论(3编辑  收藏  举报