JScrollPane和JTextArea,JMenuBar、JMenu和JMenuItem之间的组合关系

package menuta;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import ioutil.*;
public class DemoMenusAndTextAreas extends JFrame{
      //////////////////////////////////////////////////////// main
    public static void main(String[] args){
      JFrame theFrame = new DemoMenusAndTextAreas();
      theFrame.setSize(350, 250);
      theFrame.setVisible(true);         
   }
    //////////////////////////////////////////////////////// Model
    // none
//////////////////////////////////////////////////////// View
// Create controls
   private JTextArea taDisplay     = new JTextArea("Greetings!\n");
   
   private JMenu     muFile        = new JMenu("File");      
   private JMenuItem miFileNew     = new JMenuItem("New");
   
   private JMenu     muEdit        = new JMenu("Edit");       
   private JMenuItem miEditAppend  = new JMenuItem("Append");
   private JMenuItem miEditReplace = new JMenuItem("Replace");
  public DemoMenusAndTextAreas(){
    // Set title
      setTitle("Menus and TextArea Demo");
      // Create container and layout
      Container contentPane = getContentPane();
      EasyGridLayout layout = new EasyGridLayout();
      contentPane.setLayout (layout);
  // Set constraints and add controls to container
      JScrollPane spDisplay = new JScrollPane(taDisplay);
      layout.setConstraints(spDisplay  , 1,1,1,1);
      contentPane.add(spDisplay);
 //
1.组合关系,JScrollPane组件的使用,add其它组件后,使它成为JScrollPane的属性,所以容器添加JScrollPane对象即可。
   // Create the menu bar and add menus and menu items
      JMenuBar menuBar = new JMenuBar();
     this.setJMenuBar(menuBar);/
/this是theFrame对象,和contentPane是有区别的。
      menuBar.add(muFile);
      menuBar.add(muEdit);
      muFile.add(miFileNew);
//2.组合关系,将JMenu作为JmenuBar的属性,然后将JMenuItem作为JMenu的属性,能够使得JMenuItem作为MenuBar的属性。
      muEdit.add(miEditAppend);
      muEdit.add(miEditReplace);

      // Specify listeners
      miFileNew.addActionListener(new FileNewListener());
      miEditAppend.addActionListener(new EditAppendListener());
      miEditReplace.addActionListener(new EditReplaceListener());
      this.addWindowListener(new MyWindowAdapter());   
   }
     //////////////////////////////////////////////////////// Controller
// File-new listener
   private class FileNewListener implements ActionListener{
      public void actionPerformed(ActionEvent e){
         taDisplay.setText("");//
新建文件是利用JComponentText对象setText(" ")空,或实现replace文件内容的功能。
      }
   }
 // Edit-append listener
   private class EditAppendListener implements ActionListener{
      public void actionPerformed(ActionEvent e){
         taDisplay.append("Appending one more line.\n");//
利用JTextArea的append方法实现后面添加。
      }
   }
 // Edit-modify listener
   private class EditReplaceListener implements ActionListener{
      public void actionPerformed(ActionEvent e){
         taDisplay.setText("Setting a new line of text.\n");//setText覆盖。
      }
   }
    // Window listener
   private class MyWindowAdapter extends WindowAdapter{
      public void windowClosing (WindowEvent e){
         System.exit(0);
      }
   }
}

你可能感兴趣的:(JTextArea)