精华内容
下载资源
问答
  • java,applet 容器、组件布局管理器

    千次阅读 2012-09-17 09:26:38
    10.2.1 容器  AWT容器分为两类:外部容器和内部容器。其中,外部容器一般会独立存在,例如Frame类;... 其中两个最常用的容器是Frame和Panel。在后面我们还要单独介绍Applet(一种特殊的Panel)。  框架
    10.2.1 容器 
      AWT容器分为两类:外部容器和内部容器。其中,外部容器一般会独立存在,例如Frame类;而内部容器则会嵌套在外部容器内部使用,例如Panel类。容器的层次结构如图10-2所示。
      
      
      图10-2 AWT容器的层次结构
      其中两个最常用的容器是Frame和Panel。在后面我们还要单独介绍Applet(一种特殊的Panel)。
      框架(Frame):Frame是顶级窗口,可以显示标题,重置大小。
      面板(Panel):面板提供了建立应用程序的空间。我们可以把图形元件(包括其他面板)放在一个面板上,然后把这个面板作为内部容器放在Frame等外部容器上。
      容器类的常用方法包括:
      add()
      add(Component com)
      add(Component, int index)
      add(Component component, Object constraints)
      add(String name, Component component),
      add(Component component, Object constraints, int index)
      setLayout() and getLayout()
      getComponent()
      getInsets()
      remove and removeAll()
      validate()
      这些方法主要与我们后面讲的步骤,例如布局管理、添加组件有关。
      10.2.2 布局管理
      选择了容器之后,可以通过容器的setLayout()和getLayout()方法来确定布局(Layout),也就是限制容器中各个组件的位置和大小等。
      Java提供了多种布局,如顺序布局(Flow Layout)、边界布局(Border Layout)和网格布局(Grid Layout)等。
      1.顺序布局
      顺序布局(Flow Layout)是最基本的一种布局,面板的默认布局就是顺序布局。顺序布局指的是把图形元件一个接一个地放在面板上。下面是一个顺序布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      public class MyFlowLayout {
      private Frame f;
      private Button button1, button2, button3;
      
      public static void main (String args[]) {
      MyFlowLayout mflow = new MyFlowLayout ();
      mflow.go();
      }
      
      public void go() {
      f = new Frame ("FlowLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      //f.setLayout(new FlowLayout());
      f.setLayout(new FlowLayout(FlowLayout.LEADING, 20, 20));
      button1 = new Button("确定");
      button2 = new Button("打开");
      button3 = new Button("关闭");
      f.add(button1);
      f.add(button2);
      f.add(button3);
      f.setSize (200,200);
      f.pack();
      f.setVisible(true);
      }
      }
      程序运行结果见图10-3。
      
      
      图10-3 顺序布局(Flow Layout)
      2.边界布局
      边界布局(Border Layout)包括5个区:北区、南区、东区、西区和中区。这5个区在面板上的分布规律是“上北下南,左西右东”。下面是一个边界布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      public class MyBorderLayout {
      Frame f;
      Button east, south, west, north, center;
      
      public static void main(String args[]) {
      MyBorderLayout mb = new MyBorderLayout();
      mb.go();
      }
      
      public void go() {
      f = new Frame("BorderLayout 演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setBounds(0,0, 300, 300);
      f.setLayout(new BorderLayout());
      
      north = new Button("北");
      south = new Button("南");
      east = new Button("东");
      west = new Button("西");
      center= new Button("中");
      
      f.add(BorderLayout.NORTH, north);
      f.add(BorderLayout.SOUTH, south);
      f.add(BorderLayout.EAST, east);
      f.add(BorderLayout.WEST, west);
      f.add(BorderLayout.CENTER, center);
      
      f.setVisible(true);
      }
      }
      程序运行结果见图10-4。
      
      
      图10-4 边界布局(Border Layout)
      3.网格布局
      网格布局(Grid Layout)把面板分成一个个大小相等的网格,你可以给出网格的行数和列数。下面是一个网格布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      public class MyGridLayout {
      private Frame f;
      private Button[] btn;
      public static void main(String args[]) {
      MyGridLayout grid = new MyGridLayout();
      grid.go();
      }
      public void go() {
      f = new Frame("GridLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setLayout (new GridLayout (3, 3, 10, 10));
      btn = new Button[9];
      for(int i = 0; i <=8; i++) {
      int j = i + 1;
      btn[i] = new Button("" + j);
      f.add(btn[i]);
      }
      
      // f.pack();
      f.setSize(100, 100);
      f.setVisible(true);
      }
      }
      程序运行结果见图10-5。
      
      
      图10-5 网格布局(Grid Layout)
      4.卡片布局
      卡片布局(Card Layout)把每个组件看作一张卡片,好像一副扑克牌,它们叠在一起,每次只有最外面的一个组件可以被看到。
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      public class MyCardLayout {
      public static void main(String args[]) {
      new MyCardLayout().go();
      }
      
      public void go() {
      final Frame f = new Frame("CardLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setSize(300, 100);
      f.setLayout(new CardLayout());
      
      final Frame f1 = f;
      for(int i = 1; i <= 5; ++i) {
      Button b = new Button("Button "+ i);
      b.setSize(100, 25);
      b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
      CardLayout cl = (CardLayout)f1.getLayout();
      cl.next(f1);
      }
      } );
      f.add(b, "button" + i);
      }
      f.setVisible(true);
      }
      }
      程序运行结果见图10-6。
      图10-6 卡片布局(Card Layout)
      单击按钮Button1后,显示下一个按钮Button2,依此类推。
      5.网格包布局
      网格包(GridBag)布局是基于网格布局之上的一种改进。和基本的网格布局不同的是,一个组件可以跨越一个或多个网格,这样一来增加了布局的灵活性。为了处理网格的跨越性,我们可以使用GridBagConstraints类。有兴趣的读者可以参考Java API来了解它。
      package sample;
      import java.awt.*;
      import java.util.*;
      import java.awt.event.*;
      public class MyGridBagLayout extends Panel {
      protected void makebutton(String name,
      GridBagLayout gridbag,
      GridBagConstraints c) {
      Button button = new Button(name);
      gridbag.setConstraints(button, c);
      add(button);
      }
      public void go() {
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      setFont(new Font("Helvetica", Font.PLAIN, 14));
      setLayout(gridbag);
      c.fill = GridBagConstraints.BOTH;
      c.weightx = 1.0;
      makebutton("Button001", gridbag, c);
      makebutton("Button2", gridbag, c);
      makebutton("Button3", gridbag, c);
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      makebutton("Button4", gridbag, c);
      c.weightx= 0.0; //reset to the default
      makebutton("Button5", gridbag, c); //another row
      c.gridwidth = 2; //GridBagConstraints.RELATIVE; //next-to-last in row
      makebutton("Button6", gridbag, c);
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      makebutton("Button007", gridbag, c);
      c.gridwidth =1; //reset to the default
      c.gridheight = 2;
      c.weighty = 1.0;
      makebutton("Button8", gridbag, c);
      c.weighty= 1.0; //reset to the default
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      c.gridheight = 1; //reset to the default
      makebutton("Button9", gridbag, c);
      makebutton("Button10", gridbag, c);
      setSize(300, 100);
      }
      public static void main(String args[]) {
      final Frame f = new Frame("GridBagLayout 演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      MyGridBagLayout gb = new MyGridBagLayout();
      gb.go();
      f.add("Center", gb);
      f.pack();
      f.setVisible(true);
      }
      }
      程序运行结果见图10-7。
      
      
      图10-7 网格包(GridBag)布局
      10.2.3 AWT组件库
      本节从应用的角度进一步介绍AWT的一些组件,目的是使大家加深对AWT的理解,掌握如何用各种组件构造图形化用户界面,学会控制组件的颜色和字体等属性。在介绍组件过程中,我们提前引入了事件处理的一些相关内容(之后会详细展开)。
      下面是一些常用组件的介绍。
      1.按钮(Button)
      按钮是最常用的一个组件,其构造方法如下:
      Button b = new Button("Quit");
      当按钮被点击后,会产生ActionEvent事件,由ActionListener接口进行监听和处理事件。
      ActionEvent的对象调用getActionCommand()方法可以得到按钮的标识名,默认按钮名为label。用setActionCommand()可以为按钮设置组件标识符。
      2.标签
      标签是一种放到面板上的静止的正文。其构造方法如下:
      Label label1 = new Label("你好!")
      下面是一个标签的例子。
      import java.awt.*;
      import java.applet.Applet;
      public class LabelTest extends Applet {
      public void init() {
      setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
      Label label1 = new Label("你好!");
      Label label2 = new Label("欢迎!");
      add(label1);
      add(label2);
      }
      ……
      }
      3.复选框(Checkbox)
      复选框提供简单的“on/off”开关,旁边显示文本标签。
      其主要方法如下:
      setLayout(new GridLayout(3,1));
      add(new Checkbox("one",null,true));
      add(new Checkbox("two"));
      add(new Checkbox("three"));
      复选框用ItemListener来监听ItemEvent事件,当复选框状态改变时,用getStateChange()获取当前状态,使用getItem()获得被修改复选框的字符串对象。
      4.复选框组(CheckboxGroup)
      使用复选框组,可以实现单选框的功能,也就是说,只能选择其中的一项。方法如下:
      setLayout(new GridLayout(3, 1));
      CheckboxGroup cbg = new CheckboxGroup();
      add(new Checkbox("one", cbg, true));
      add(new Checkbox("two", cbg, false));
      add(new Checkbox("three", cbg, false));
      5.下拉式菜单(Choice)
      下拉式菜单每次只能选择其中的一项,它能够节省显示空间,适用于大量选项。
      Choice colorChooser=new Choice();
      colorChooser.add("Green");
      colorChooser.add("Red");
      colorChooser.add("Blue");
      Choice用ItemListener接口来进行监听。
      6.画布(Canvas)
      一个应用程序必须继承Canvas类才能获得有用的功能,比如创建一个自定义组件。如果想在画布上完成一些图形处理,则Canvas类中的paint()方法必须被重写。
      Canvas组件监听各种鼠标、键盘事件。当在Canvas组件中输入字符时,必须先调用requestFocus()方法。
      创建画布的实例如下:
      import java.awt.*;
      import java.applet.Applet;
      public class CanvasGUI extends Applet {
      . . .
      MyCanvas doodle;
      . . .
      public void init() {
      . . .
      //建立我们的画布
      doodle = new MyCanvas();
      doodle.reshape(0,0,100,100);
      leftPanel.add("Center",doodle);
      . . .
      }
      }
      class MyCanvas extends Canvas {
      public void paint(Graphics g) {
      g.drawRect(0, 0, 99, 99);
      g.drawString("Canvas",15,40);
      }
      }
      7.单行文本输入区(TextField)
      单行文本输入区也叫做文本域,一般用来让用户输入像姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。
      单行文本输入区构造方法有4种类型供选择:空的、空的并且具有指定长度、带有初始文本内容的和带有初始文本内容并具有指定长度的。下面是生成这4种文本域的代码。
      TextField tf1, tf2, tf3, tf4;
      //空的文本域
      tf1 = new TextField();
      //长度为20的空的文本域
      tf2 = new TextField(20);
      //带有初始文本内容的文本域
      tf3 = new TextField("你好");
      //带有初始文本内容并具有指定长度的文本域
      tf4 = new TextField("你好", 30);
      单行文本输入区只能显示一行,当按下回车键时,会发生ActionEvent事件,可以通过ActionListener中的actionPerformed()方法对事件进行相应处理。可以使用setEditable(boolean)方法设置为只读属性。
      8.文本输入区(TextArea)
      TextArea可以显示多行多列的文本。与文本域类似,创建文本区时也有4种类型供选择,但如果指定文本区的大小,必须同时指定行数和列数。
      TextArea ta1, ta2;
      //一个空的文本区
      ta1 = new TextArea();
      //一个带有初始内容、大小为5x40的文本区
      ta2 = new TextArea("你好!", 5, 40);
      可以用成员方法setEditable()来决定用户是否可以对文本区的内容进行编辑。
      //使文本区为只读的
      ta2.setEditable(false)
      我们可以用成员方法getText()来获得文本区的当前内容。在TextArea中可以显示水平或垂直的滚动条。要判断文本是否输入完毕,可以在TextArea旁边设置一个按钮,通过按钮点击产生的ActionEvent事件对输入的文本进行处理。
      9.列表(List)
      列表框使用户易于操作大量的选项。创建列表框的方法和下拉式菜单有些相似。列表框的所有条目都是可见的,如果选项很多,超出了列表框可见区的范围,则列表框的旁边将会有一个滚动条。列表框中提供了多个文本选项,可以浏览多项。
      List lst=new List(4,false); //两个参数分别表示显示的行数,是否允许多选
      lst.add("Venus");
      lst.add("Earth");
      lst.add("Moon");
      lst.add("Mars");
      cnt.add(lst);
      10.滚动条
      在某些程序中,需要调整线性的值,这时就需要滚动条。滚动条提供了易于操作的值的范围或区的范围。
      (1)创建滚动条
      当创建一个滚动条时,必须指定它的方向、初始值、滑块的大小、最小值和最大值。
      public Scrollbar(int orientation, int initialValue, int sizeOfSlider, int minValue, int maxValue);
      下面是一个例子。
      Scrollbar redSlider;
      public void init() {
      redSlider = new Scrollbar(Scrollbar.VERTICAL,0,1,0,255);
      add(redSlider);
      }
      (2)滚动条事件
      和其他接口元件一样,滚动条产生一个可以控制的事件;但和其他事件不同,你必须直接使用成员方法handleEvent(),而不能使用成员方法action()。
      (3)滚动条的值的显示
      如果想显示滑块所在位置的值,则需要添加一个自己的文本域。下面是一个例子。
      import java.awt.*;
      import java.applet.Applet;
      public class RedSliderTest extends Applet {
      Scrollbar redslider;
      TextField redvalue;
      Label redlabel;
      public void init( ) {
      setLayout(new GridLayout(1,3));
      redslider = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
      redvalue = new TextField("0",5);
      redvalue.setEditable(false);
      redlable = new Label("Red(0-255)");
      add(redlabel);
      add(redslider);
      add(redvalue);
      }
      public boolean handleEvent(Event e) {
      if (e.target instanceof Scrollbar) {
      redvalue.setText(Integer.toString(((Scrollbar)e.target).getValue()));
      return true;
      }
      return super.handleEvent(e);
      }
      public boolean action(Event e, Object arg) {
      System.out.println("Event"+ arg);
      return true;
      }
      }
      11.对话框(Dialog)
      对话框是Window类的子类,是一个容器类,属于特殊组件。对话框和一般窗口的区别在于它依赖于其他窗口。对话框分为非模式(non-modal)和模式(modal)两种。
      12.文件对话框(Filedialog)
      当用户想打开或存储文件时,使用文件对话框进行操作。主要代码如下:
      FileDialog d=new FileDialog(ParentFr,"FileDialog");
      d.setVisible(true);
      String filename=d.getFile();
      13.菜单(Menu)
      菜单的开发相对复杂,我们需要使用3个类:Menu、MenuBar和MenuItem。它们的层次结构如图10-8所示。
      
      
      图10-8 菜单的层次结构
      (1)MenuBar
      我们无法直接将菜单添加到容器的某一位置,也无法使用布局管理器对其加以控制。菜单只能被添加到菜单容器(MenuBar)中。MenuBar会被添加到Frame对象中,作为整个菜单树的根基。
      Frame fr = new Frame("MenuBar");
      MenuBar mb = new MenuBar();
      fr.setMenuBar(mb);
      fr.setSize(150,100);
      fr.setVisible(true);
      (2)Menu
      菜单可以被添加到MenuBar中或其他Menu中。
      Frame fr = new Frame("MenuBar");
      MenuBar mb = new MenuBar();
      fr.setMenuBar(mb);
      Menu m1 = new Menu("File");
      Menu m2 = new Menu("Edit");
      Menu m3 = new Menu("Help");
      mb.add(m1);
      mb.add(m2);
      mb.setHelpMenu(m3);
      fr.setSize(200,200);
      fr.setVisible(true);
      (3)MenuItem
      MenuItem是菜单树中的“叶子节点”。MenuItem通常被添加到一个Menu中。对于MenuItem对象可以添加ActionListener,使其能够完成相应的操作。
      Menu m1 = new Menu("File");
      MenuItem mi1 = new MenuItem("Save");
      MenuItem mi2 = new MenuItem("Load");
      MenuItem mi3 = new MenuItem("Quit");
      m1.add(mi1);
      m1.add(mi2);
      m1.addSeparator();
      m1.add(mi3);
      MenuBar和Menu都没有必要注册监听器,只需要对MenuItem添加监听器ActionListener,完成相应的操作。
      我们看一个完整的Menu实例。
      /**
      * 演示Menu、MenuBar和MenuItem的使用
      */
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      class MenuTest extends Frame {
      PopupMenu pop;
      public MenuTest() {
      super("Golf Caddy");
      addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) {
      setVisible(false);
      dispose();
      System.exit(0);
      }
      });
      this.setSize(300,300);
      //this.setLayout(new FlowLayout());
      this.add(new Label("Choose club."), BorderLayout.NORTH);
      
      Menu woods = new Menu("Woods");
      woods.add("1 W");
      woods.add("3 W");
      woods.add("5 W");
      
      Menu irons = new Menu("Irons");
      irons.add("3 iron");
      irons.add("4 iron");
      irons.add("5 iron");
      irons.add("7 iron");
      irons.add("8 iron");
      irons.add("9 iron");
      irons.addSeparator();
      irons.add("PW");
      irons.insert("6 iron", 3);
      
      MenuBar mb = new MenuBar();
      mb.add(woods);
      mb.add(irons);
      this.setMenuBar(mb);
      
      pop = new PopupMenu("Woods");
      pop.add("1 W");
      pop.add("3 W");
      pop.add("5 W");
      
      final TextArea p = new TextArea(100, 100);
      
      p.setBounds(0,0,100,200);
      p.setBackground(Color.green);
      p.add(pop);
      //以下是事件处理,稍后介绍
      p.addMouseListener(new MouseAdapter() {
      public void mouseReleased(java.awt.event.MouseEvent evt) {
      if(evt.isPopupTrigger()) {
      System.out.println("popup trigger");
      System.out.println(evt.getComponent());
      System.out.println("" + evt.getX()+ ""+ evt.getY());
      pop.show(p, evt.getX(), evt.getY());
      }
      
      }
      });
      this.add(p, BorderLayout.CENTER);
      }
      
      public static void main (String [] args) {
      new MenuTest().setVisible(true);
      }
      } 
    展开全文
  • 导读: 10.2.1 容器 AWT容器分为两类:外部容器和内部容器。其中,外部容器一般会... 图10-2 AWT容器的层次结构 其中两个最常用的容器是Frame和Panel。在后面我们还要单独介绍Applet(一种特殊的Panel)。 框架(Fra
    
    	导读: 
      10.2.1 容器
      AWT容器分为两类:外部容器和内部容器。其中,外部容器一般会独立存在,例如Frame类;而内部容器则会嵌套在外部容器内部使用,例如Panel类。容器的层次结构如图10-2所示。
      image007.jpg
      
      图10-2 AWT容器的层次结构
      其中两个最常用的容器是Frame和Panel。在后面我们还要单独介绍Applet(一种特殊的Panel)。
      框架(Frame):Frame是顶级窗口,可以显示标题,重置大小。
      面板(Panel):面板提供了建立应用程序的空间。我们可以把图形元件(包括其他面板)放在一个面板上,然后把这个面板作为内部容器放在Frame等外部容器上。
      容器类的常用方法包括:
      add()
      add(Component com)
      add(Component, int index)
      add(Component component, Object constraints)
      add(String name, Component component),
      add(Component component, Object constraints, int index)
      setLayout() and getLayout()
      getComponent()
      getInsets()
      remove and removeAll()
      validate()
      这些方法主要与我们后面讲的步骤,例如布局管理、添加组件有关。
      10.2.2 布局管理
      选择了容器之后,可以通过容器的setLayout()和getLayout()方法来确定布局(Layout),也就是限制容器中各个组件的位置和大小等。
      Java提供了多种布局,如顺序布局(Flow Layout)、边界布局(Border Layout)和网格布局(Grid Layout)等。
      1.顺序布局
      顺序布局(Flow Layout)是最基本的一种布局,面板的默认布局就是顺序布局。顺序布局指的是把图形元件一个接一个地放在面板上。下面是一个顺序布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      public class MyFlowLayout {
      private Frame f;
      private Button button1, button2, button3;
      
      public static void main (String args[]) {
      MyFlowLayout mflow = new MyFlowLayout ();
      mflow.go();
      }
      
      public void go() {
      f = new Frame ("FlowLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      //f.setLayout(new FlowLayout());
      f.setLayout(new FlowLayout(FlowLayout.LEADING, 20, 20));
      button1 = new Button("确定");
      button2 = new Button("打开");
      button3 = new Button("关闭");
      f.add(button1);
      f.add(button2);
      f.add(button3);
      f.setSize (200,200);
      f.pack();
      f.setVisible(true);
      }
      }
      程序运行结果见图10-3。
      image008.jpg
      
      图10-3 顺序布局(Flow Layout)
      2.边界布局
      边界布局(Border Layout)包括5个区:北区、南区、东区、西区和中区。这5个区在面板上的分布规律是“上北下南,左西右东”。下面是一个边界布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      public class MyBorderLayout {
      Frame f;
      Button east, south, west, north, center;
      
      public static void main(String args[]) {
      MyBorderLayout mb = new MyBorderLayout();
      mb.go();
      }
      
      public void go() {
      f = new Frame("BorderLayout 演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setBounds(0,0, 300, 300);
      f.setLayout(new BorderLayout());
      
      north = new Button("北");
      south = new Button("南");
      east = new Button("东");
      west = new Button("西");
      center= new Button("中");
      
      f.add(BorderLayout.NORTH, north);
      f.add(BorderLayout.SOUTH, south);
      f.add(BorderLayout.EAST, east);
      f.add(BorderLayout.WEST, west);
      f.add(BorderLayout.CENTER, center);
      
      f.setVisible(true);
      }
      }
      程序运行结果见图10-4。
      image009.jpg
      
      图10-4 边界布局(Border Layout)
      3.网格布局
      网格布局(Grid Layout)把面板分成一个个大小相等的网格,你可以给出网格的行数和列数。下面是一个网格布局的例子。
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      public class MyGridLayout {
      private Frame f;
      private Button[] btn;
      public static void main(String args[]) {
      MyGridLayout grid = new MyGridLayout();
      grid.go();
      }
      public void go() {
      f = new Frame("GridLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setLayout (new GridLayout (3, 3, 10, 10));
      btn = new Button[9];
      for(int i = 0; i <=8; i++) {
      int j = i + 1;
      btn[i] = new Button("" + j);
      f.add(btn[i]);
      }
      
      // f.pack();
      f.setSize(100, 100);
      f.setVisible(true);
      }
      }
      程序运行结果见图10-5。
      image010.jpg
      
      图10-5 网格布局(Grid Layout)
      4.卡片布局
      卡片布局(Card Layout)把每个组件看作一张卡片,好像一副扑克牌,它们叠在一起,每次只有最外面的一个组件可以被看到。
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      public class MyCardLayout {
      public static void main(String args[]) {
      new MyCardLayout().go();
      }
      
      public void go() {
      final Frame f = new Frame("CardLayout演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      
      f.setSize(300, 100);
      f.setLayout(new CardLayout());
      
      final Frame f1 = f;
      for(int i = 1; i <= 5; ++i) {
      Button b = new Button("Button "+ i);
      b.setSize(100, 25);
      b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
      CardLayout cl = (CardLayout)f1.getLayout();
      cl.next(f1);
      }
      } );
      f.add(b, "button" + i);
      }
      f.setVisible(true);
      }
      }
      程序运行结果见图10-6。
      图10-6 卡片布局(Card Layout)
      单击按钮Button1后,显示下一个按钮Button2,依此类推。
      5.网格包布局
      网格包(GridBag)布局是基于网格布局之上的一种改进。和基本的网格布局不同的是,一个组件可以跨越一个或多个网格,这样一来增加了布局的灵活性。为了处理网格的跨越性,我们可以使用GridBagConstraints类。有兴趣的读者可以参考Java API来了解它。
      package sample;
      import java.awt.*;
      import java.util.*;
      import java.awt.event.*;
      public class MyGridBagLayout extends Panel {
      protected void makebutton(String name,
      GridBagLayout gridbag,
      GridBagConstraints c) {
      Button button = new Button(name);
      gridbag.setConstraints(button, c);
      add(button);
      }
      public void go() {
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      setFont(new Font("Helvetica", Font.PLAIN, 14));
      setLayout(gridbag);
      c.fill = GridBagConstraints.BOTH;
      c.weightx = 1.0;
      makebutton("Button001", gridbag, c);
      makebutton("Button2", gridbag, c);
      makebutton("Button3", gridbag, c);
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      makebutton("Button4", gridbag, c);
      c.weightx= 0.0; //reset to the default
      makebutton("Button5", gridbag, c); //another row
      c.gridwidth = 2; //GridBagConstraints.RELATIVE; //next-to-last in row
      makebutton("Button6", gridbag, c);
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      makebutton("Button007", gridbag, c);
      c.gridwidth =1; //reset to the default
      c.gridheight = 2;
      c.weighty = 1.0;
      makebutton("Button8", gridbag, c);
      c.weighty= 1.0; //reset to the default
      c.gridwidth = GridBagConstraints.REMAINDER; //end row
      c.gridheight = 1; //reset to the default
      makebutton("Button9", gridbag, c);
      makebutton("Button10", gridbag, c);
      setSize(300, 100);
      }
      public static void main(String args[]) {
      final Frame f = new Frame("GridBagLayout 演示");
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt) {
      f.setVisible(false);
      f.dispose();
      System.exit(0);
      }
      });
      MyGridBagLayout gb = new MyGridBagLayout();
      gb.go();
      f.add("Center", gb);
      f.pack();
      f.setVisible(true);
      }
      }
      程序运行结果见图10-7。
      image013.jpg
      
      图10-7 网格包(GridBag)布局
      10.2.3 AWT组件库
      本节从应用的角度进一步介绍AWT的一些组件,目的是使大家加深对AWT的理解,掌握如何用各种组件构造图形化用户界面,学会控制组件的颜色和字体等属性。在介绍组件过程中,我们提前引入了事件处理的一些相关内容(之后会详细展开)。
      下面是一些常用组件的介绍。
      1.按钮(Button)
      按钮是最常用的一个组件,其构造方法如下:
      Button b = new Button("Quit");
      当按钮被点击后,会产生ActionEvent事件,由ActionListener接口进行监听和处理事件。
      ActionEvent的对象调用getActionCommand()方法可以得到按钮的标识名,默认按钮名为label。用setActionCommand()可以为按钮设置组件标识符。
      2.标签
      标签是一种放到面板上的静止的正文。其构造方法如下:
      Label label1 = new Label("你好!")
      下面是一个标签的例子。
      import java.awt.*;
      import java.applet.Applet;
      public class LabelTest extends Applet {
      public void init() {
      setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
      Label label1 = new Label("你好!");
      Label label2 = new Label("欢迎!");
      add(label1);
      add(label2);
      }
      ……
      }
      3.复选框(Checkbox)
      复选框提供简单的“on/off”开关,旁边显示文本标签。
      其主要方法如下:
      setLayout(new GridLayout(3,1));
      add(new Checkbox("one",null,true));
      add(new Checkbox("two"));
      add(new Checkbox("three"));
      复选框用ItemListener来监听ItemEvent事件,当复选框状态改变时,用getStateChange()获取当前状态,使用getItem()获得被修改复选框的字符串对象。
      4.复选框组(CheckboxGroup)
      使用复选框组,可以实现单选框的功能,也就是说,只能选择其中的一项。方法如下:
      setLayout(new GridLayout(3, 1));
      CheckboxGroup cbg = new CheckboxGroup();
      add(new Checkbox("one", cbg, true));
      add(new Checkbox("two", cbg, false));
      add(new Checkbox("three", cbg, false));
      5.下拉式菜单(Choice)
      下拉式菜单每次只能选择其中的一项,它能够节省显示空间,适用于大量选项。
      Choice colorChooser=new Choice();
      colorChooser.add("Green");
      colorChooser.add("Red");
      colorChooser.add("Blue");
      Choice用ItemListener接口来进行监听。
      6.画布(Canvas)
      一个应用程序必须继承Canvas类才能获得有用的功能,比如创建一个自定义组件。如果想在画布上完成一些图形处理,则Canvas类中的paint()方法必须被重写。
      Canvas组件监听各种鼠标、键盘事件。当在Canvas组件中输入字符时,必须先调用requestFocus()方法。
      创建画布的实例如下:
      import java.awt.*;
      import java.applet.Applet;
      public class CanvasGUI extends Applet {
      . . .
      MyCanvas doodle;
      . . .
      public void init() {
      . . .
      //建立我们的画布
      doodle = new MyCanvas();
      doodle.reshape(0,0,100,100);
      leftPanel.add("Center",doodle);
      . . .
      }
      }
      class MyCanvas extends Canvas {
      public void paint(Graphics g) {
      g.drawRect(0, 0, 99, 99);
      g.drawString("Canvas",15,40);
      }
      }
      7.单行文本输入区(TextField)
      单行文本输入区也叫做文本域,一般用来让用户输入像姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。
      单行文本输入区构造方法有4种类型供选择:空的、空的并且具有指定长度、带有初始文本内容的和带有初始文本内容并具有指定长度的。下面是生成这4种文本域的代码。
      TextField tf1, tf2, tf3, tf4;
      //空的文本域
      tf1 = new TextField();
      //长度为20的空的文本域
      tf2 = new TextField(20);
      //带有初始文本内容的文本域
      tf3 = new TextField("你好");
      //带有初始文本内容并具有指定长度的文本域
      tf4 = new TextField("你好", 30);
      单行文本输入区只能显示一行,当按下回车键时,会发生ActionEvent事件,可以通过ActionListener中的actionPerformed()方法对事件进行相应处理。可以使用setEditable(boolean)方法设置为只读属性。
      8.文本输入区(TextArea)
      TextArea可以显示多行多列的文本。与文本域类似,创建文本区时也有4种类型供选择,但如果指定文本区的大小,必须同时指定行数和列数。
      TextArea ta1, ta2;
      //一个空的文本区
      ta1 = new TextArea();
      //一个带有初始内容、大小为5x40的文本区
      ta2 = new TextArea("你好!", 5, 40);
      可以用成员方法setEditable()来决定用户是否可以对文本区的内容进行编辑。
      //使文本区为只读的
      ta2.setEditable(false)
      我们可以用成员方法getText()来获得文本区的当前内容。在TextArea中可以显示水平或垂直的滚动条。要判断文本是否输入完毕,可以在TextArea旁边设置一个按钮,通过按钮点击产生的ActionEvent事件对输入的文本进行处理。
      9.列表(List)
      列表框使用户易于操作大量的选项。创建列表框的方法和下拉式菜单有些相似。列表框的所有条目都是可见的,如果选项很多,超出了列表框可见区的范围,则列表框的旁边将会有一个滚动条。列表框中提供了多个文本选项,可以浏览多项。
      List lst=new List(4,false); //两个参数分别表示显示的行数,是否允许多选
      lst.add("Venus");
      lst.add("Earth");
      lst.add("Moon");
      lst.add("Mars");
      cnt.add(lst);
      10.滚动条
      在某些程序中,需要调整线性的值,这时就需要滚动条。滚动条提供了易于操作的值的范围或区的范围。
      (1)创建滚动条
      当创建一个滚动条时,必须指定它的方向、初始值、滑块的大小、最小值和最大值。
      public Scrollbar(int orientation, int initialValue, int sizeOfSlider, int minValue, int maxValue);
      下面是一个例子。
      Scrollbar redSlider;
      public void init() {
      redSlider = new Scrollbar(Scrollbar.VERTICAL,0,1,0,255);
      add(redSlider);
      }
      (2)滚动条事件
      和其他接口元件一样,滚动条产生一个可以控制的事件;但和其他事件不同,你必须直接使用成员方法handleEvent(),而不能使用成员方法action()。
      (3)滚动条的值的显示
      如果想显示滑块所在位置的值,则需要添加一个自己的文本域。下面是一个例子。
      import java.awt.*;
      import java.applet.Applet;
      public class RedSliderTest extends Applet {
      Scrollbar redslider;
      TextField redvalue;
      Label redlabel;
      public void init( ) {
      setLayout(new GridLayout(1,3));
      redslider = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
      redvalue = new TextField("0",5);
      redvalue.setEditable(false);
      redlable = new Label("Red(0-255)");
      add(redlabel);
      add(redslider);
      add(redvalue);
      }
      public boolean handleEvent(Event e) {
      if (e.target instanceof Scrollbar) {
      redvalue.setText(Integer.toString(((Scrollbar)e.target).getValue()));
      return true;
      }
      return super.handleEvent(e);
      }
      public boolean action(Event e, Object arg) {
      System.out.println("Event"+ arg);
      return true;
      }
      }
      11.对话框(Dialog)
      对话框是Window类的子类,是一个容器类,属于特殊组件。对话框和一般窗口的区别在于它依赖于其他窗口。对话框分为非模式(non-modal)和模式(modal)两种。
      12.文件对话框(Filedialog)
      当用户想打开或存储文件时,使用文件对话框进行操作。主要代码如下:
      FileDialog d=new FileDialog(ParentFr,"FileDialog");
      d.setVisible(true);
      String filename=d.getFile();
      13.菜单(Menu)
      菜单的开发相对复杂,我们需要使用3个类:Menu、MenuBar和MenuItem。它们的层次结构如图10-8所示。
      image014.jpg
      
      图10-8 菜单的层次结构
      (1)MenuBar
      我们无法直接将菜单添加到容器的某一位置,也无法使用布局管理器对其加以控制。菜单只能被添加到菜单容器(MenuBar)中。MenuBar会被添加到Frame对象中,作为整个菜单树的根基。
      Frame fr = new Frame("MenuBar");
      MenuBar mb = new MenuBar();
      fr.setMenuBar(mb);
      fr.setSize(150,100);
      fr.setVisible(true);
      (2)Menu
      菜单可以被添加到MenuBar中或其他Menu中。
      Frame fr = new Frame("MenuBar");
      MenuBar mb = new MenuBar();
      fr.setMenuBar(mb);
      Menu m1 = new Menu("File");
      Menu m2 = new Menu("Edit");
      Menu m3 = new Menu("Help");
      mb.add(m1);
      mb.add(m2);
      mb.setHelpMenu(m3);
      fr.setSize(200,200);
      fr.setVisible(true);
      (3)MenuItem
      MenuItem是菜单树中的“叶子节点”。MenuItem通常被添加到一个Menu中。对于MenuItem对象可以添加ActionListener,使其能够完成相应的操作。
      Menu m1 = new Menu("File");
      MenuItem mi1 = new MenuItem("Save");
      MenuItem mi2 = new MenuItem("Load");
      MenuItem mi3 = new MenuItem("Quit");
      m1.add(mi1);
      m1.add(mi2);
      m1.addSeparator();
      m1.add(mi3);
      MenuBar和Menu都没有必要注册监听器,只需要对MenuItem添加监听器ActionListener,完成相应的操作。
      我们看一个完整的Menu实例。
      /**
      * 演示Menu、MenuBar和MenuItem的使用
      */
      package sample;
      import java.awt.*;
      import java.awt.event.*;
      class MenuTest extends Frame {
      PopupMenu pop;
      public MenuTest() {
      super("Golf Caddy");
      addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) {
      setVisible(false);
      dispose();
      System.exit(0);
      }
      });
      this.setSize(300,300);
      //this.setLayout(new FlowLayout());
      this.add(new Label("Choose club."), BorderLayout.NORTH);
      
      Menu woods = new Menu("Woods");
      woods.add("1 W");
      woods.add("3 W");
      woods.add("5 W");
      
      Menu irons = new Menu("Irons");
      irons.add("3 iron");
      irons.add("4 iron");
      irons.add("5 iron");
      irons.add("7 iron");
      irons.add("8 iron");
      irons.add("9 iron");
      irons.addSeparator();
      irons.add("PW");
      irons.insert("6 iron", 3);
      
      MenuBar mb = new MenuBar();
      mb.add(woods);
      mb.add(irons);
      this.setMenuBar(mb);
      
      pop = new PopupMenu("Woods");
      pop.add("1 W");
      pop.add("3 W");
      pop.add("5 W");
      
      final TextArea p = new TextArea(100, 100);
      
      p.setBounds(0,0,100,200);
      p.setBackground(Color.green);
      p.add(pop);
      //以下是事件处理,稍后介绍
      p.addMouseListener(new MouseAdapter() {
      public void mouseReleased(java.awt.event.MouseEvent evt) {
      if(evt.isPopupTrigger()) {
      System.out.println("popup trigger");
      System.out.println(evt.getComponent());
      System.out.println("" + evt.getX()+ ""+ evt.getY());
      pop.show(p, evt.getX(), evt.getY());
      }
      
      }
      });
      this.add(p, BorderLayout.CENTER);
      }
      
      public static void main (String [] args) {
      new MenuTest().setVisible(true);
      }
      }
      程序运行结果见图10-9。
      image015.jpg

    本文转自
    http://book.csdn.net/bookfiles/347/10034713585.shtml
    展开全文
  • Frame和Panel

    2019-11-21 14:49:25
    FlowLayout是Panel和 Applet的默认布局管理器。在该布局管理器中,组件在容器中按照从上到下,从左到右的顺序进行排列,行满后则换行。 BorderLayout是Window、Frame和Dialog的默认布局管理器,其将容器分成North、...

    JAVA中,Framel默认的布局管理器是BorderLayout类型,Panel默认的布局管理器是FlowLayout类型。

    FlowLayout是Panel 和 Applet 的默认布局管理器。在该布局管理器中,组件在容器中按照从上到下,从左到右的顺序进行排列,行满后则换行。

    BorderLayout是Window、Frame和Dialog的默认布局管理器,其将容器分成North、South、East、West和Center 5个区域,每个区域只能放置一个组件。使用BorderLayout时,如果容器大小发生变换,组件的相对位置不变。

     

    1、网格布局管理器(GridLayout):

    GridLayout 可使容器中的各个组件呈网格状布局,平局占据容器的空间,即使容器的大小发生变化,每个组件还是平均占据容器的空间。和FlowLayout一样,GridLayout也是按照从上到下,从左到右的规律进行排列的。

    2、卡片布局管理器(CardLayout):

    CardLayout能够帮助用户处理两个乃至跟多的成员共享同一显示空间。它把容器分成许多层,每层的显示空间占据整个容器的大小,并且每层之允许反之一个组件,可以通过Panel来实现每层复杂的用户界面

     

    1、Frame是框架,这个是要实现的功能界面的布局,默认管理器“BorderLayout”。

    2、Panel是面板,这个是要实现的某个功能模块的具体实现,默认管理器“FlowLayout“。

    展开全文
  • 容器Panel和applet缺省使用的布局编辑策略是 BA、BorderLayout B、FlowLayoutC、GridLayout D、CarLayout2. .applet类的直接父类是: BA、Component类 B、Container类C、Frame类 D、Panel类3. .Swing与AWT的区别不...

    十一章 图形用户界面程序设计入门

    一.选择题:

    1. 容器Panel和applet缺省使用的布局编辑策略是 B

    A、BorderLayout B、FlowLayout

    C、GridLayout D、CarLayout

    2. .applet类的直接父类是: B

    A、Component类 B、Container类

    C、Frame类 D、Panel类

    3. .Swing与AWT的区别不包括 D

    A、Swing是由纯Java实现的轻量级构件

    B、Swing没有本地代码

    C、Swing不依赖操作系统的支持

    D、Swing支持图形用户界面

    4. 在编写Java applet程序时,若需要对发生事件作出响应和处理,一般需要在程序的

    开头写上 B _语句。

    A、import java.awt.*; B、import java.applet.*;

    C、import java.io.*; D、import java.awt.event.*;

    5. 下面哪个操作是applet可以做的? B

    A、读取客户端部分系统变量 B、读取客户端文件

    C、在客户端主机上创建新文件 D、在客户端装载程序库

    6. 在Java中,所有类的根类是 A

    A.http://www.doczj.com/doc/31f2606fb84ae45c3b358ce3.htmlng.Object B.http://www.doczj.com/doc/31f2606fb84ae45c3b358ce3.htmlng.Class

    C.java.applet.Applet D.java.awt.Frame

    7.在JAVA中实现图形用户界面可以使用组建AWT和组件 A

    A、swing B、Swing

    C、JOptionPane D、import

    8.在JAVA中,一般菜单格式包含有下列类对象 D

    A、JMenuBar B、JMenu

    C、JMenuItem D、JMenuBar、JMenu、JMenuItem

    9.JAVA中提供了多种布局对象类。其中使用卡片式布局的是 D

    A、FlowLayout B、BoederLayout

    C、BoxLayout D、CardLayout

    10. 下列关于Applet的叙述中,错误的是 A

    A、Applet是Java类,所以可以由JDK中的解释器java.exe直接解释运行

    B、Applet应该定义为java.applet.Applet类或javax.swing.JApplet类的子类

    C、Applet与Application的主要区别在执行方式上

    D、通过在HTML文件中采用标记可以向Applet传递参数

    11 与Applet生命周期相关的方法的数量是 A

    A、4种 B、3种 C、2种 D、5种

    12下列关于Applet的叙述中,错误的是 A

    A、Applet是Java类,所以可以由JDK中的解释器java.exe直接解释运行

    B、Applet应该定义为java.applet.Applet类或javax.swing.JApplet类的子类

    C、Applet与Application的主要区别在执行方式上

    D、通过在HTML文件中采用标记可以向Applet传递参数

    13 java中对Applet设置了严格的安全限制。下列关于Applet在Java2中安全限制叙述正确的是 A

    A、根本无法解除 B、只有部分限制可以解除,而其它限制无法解除

    C、可以在安全策略的控制下解除 D、已经缺省地全部解除

    14.下面关于Applet的说法正确的是 B

    A、Applet也需要main方法 B

    展开全文
  • FlowLayout布局

    2017-05-04 19:30:00
    FlowLayout是容器Panel和Applet的默认默认布局管理器。 在FlowLayout布局管理器中组件放置规则是从左到右,从上到下。 构造方法有 1.FlowLayout(FlowLayout.RIGHT,20,40); 第一个参数FlowLayou.RIGHT表示组件...
  • 容器组件 awt组件

    2014-02-23 17:06:19
    1.panel--------------Applet 2. Window---------Frame 一。Frame适用于所有的GUI程序  常用 的Frame方法 1. add(Component c) 2. dispose() 3. setLayout(LayoutManager lm) 4. setTitle(Str
  • C11(Applet)

    2007-02-02 13:07:00
    Applet有那些优点Applet是嵌入到一个HTML页面中,可通过Web浏览器下载...描述Applet和AWT的类层次从java.awt.component继承而来的java.awt.Container又分为两个子类java.awt.Windowjava.awt.Panel,而java.awt.Fra
  • Java布局管理器

    2010-09-10 09:54:00
    一、FlowLayout类    FlowLayout是容器Panel和Applet类默认使用的布局管理器。   1、 配置组件的方式是:  组件按照加入的先后顺序从左向右排列。  一行排满之后转至下一...
  • GUI GUI核心技术:Swing AWT 界面不美观,需要jre环境 AWT abstract windows tools 包含了很多的类接口,用于 GUI 编程 元素:窗口,按钮,文本框 ...​ panel: Applet FRAME package com.zepei; import java
  • 容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件...常用的容器3种:Panel, Frame, Applet。 1 package TomAwt; 2 ...
  • JAVA复习题(九)GUI

    2021-01-03 12:51:14
    2. GUI中容器包括(frame, Dialog, Panel, Applet) 我的答案:frame, Dialog, Panel, Applet 正确答案:frame, Dialog, Panel, Applet 3.容器布局形式有5种,分别为( )、BorderLayout、GridLayout、CardLayout、...
  • 1.编译后的源文件可得到()个字节码文件.2.Panel和Applet容器的默认布局模式是(),Window、Frame、Dialog容器的默认布局模式是().3.、Java中的类与C++中的类相比最大的不同时Java中的...1.编译后的源文件可得到()个...
  • java Servlet Webx

    2011-06-21 17:24:00
    这个容易让我们想起applet,实际上servlet和applet有很多共同之处,首先,它们是非独立的Java应用程序,不能由用户或者程序员来调用,而是由容器进行管理。不同的是,applet是有图形化界面的,实际它继承于java.awt....
  • 窗体的几种默认布局

    千次阅读 2011-10-16 12:15:07
    窗体的默认布局为 BorderLayout。 Panel 是最简单的容器类。应用程序可以将其他组件放在面板提供的空间内,这些组件包括其他面板。 ...面板的默认布局管理器是 ...Panel和Applet的默认布局管理器是FlowLayou
  • 1 定义类用的关键字是class继承类用的关键子是_实现接口用的关键字是_ 2 线程的五种状态分别是 产生 就绪 _ _ 结束 3 对窗口的监听用的是_接口该接口中的方法较多为了便于实现该接口可以使用_ 4 Panel和Applet容器的...
  • 图形界面二

    2018-04-02 10:25:04
    1.布局管理器 布局管理器主要...流程布局 FlowLayout-11、FlowLayout是Panel和Applet的缺省布局管理器。2、组件的放置规律是从左到右、从上到下进行放置 。3、容器大小改变时,组件大小不变,相对位置会发生变化。构...
  • Java绘图小结

    2010-02-02 16:20:00
    1、布局管理器 容器.setLayout(布局方式); Java中的容器类(Container),它们只管加入小件(Meta),也就是说,它只使用自己的add()方法向自己内部加入小件。... FlowLayout是Panel和Applet的默认管理...
  • AWT的标准布局管理器

    2009-03-12 12:00:00
    1.FlowLayout:该布局管理器将组件从左到右或从上到下放置,是Panel和applet的默认布局管理器; 2.BorderLayout:该布局管理器将组件分为东、西、南、北、中五个区域,是Windows、 Dialog和Frame容器的默认布局...
  • 布局管理器

    2010-04-27 08:08:53
    1.FlowLayout:该布局管理器将组件从左到右或从上到下放置,是Panel和applet的默认布局管理器; 2.BorderLayout:该布局管理器将组件分为东、西、南、北、中五个区域,是Windows、 Dialog和Frame容器的默认布局...
  • 布局管理器种类FlowLayout: 组件在一行中从左至右水平排列,排满后折行,它是PanelApplet的默认布局管理器。BorderLayout:北、南、东、西、中,它是Window、Frame、Dialog的默认布局管理器。GridLayout:以行列...
  • AWT介绍

    2017-09-28 23:56:54
    有三种类型的容器:Window,Panel,ScrollPanel,常用有Panel,Frame,Applet。 组件: .文本框文本区域 ①单行文本框TextFiled ②多行文本区域TextArea .标签(Label) .按钮(Button) .选择性组件 ①...
  • JAVA 布局管理器

    千次阅读 2011-04-13 15:33:00
    New Document ...组件在容器中的位置和...Window、Frame和Dialog的默认布局管理器是BorderLayout,Panel和 Applet的默认布局管理器是FlowLayout。 可以通过setLayout()方法来重新设置容器
  • 包含了很多类接口 组件Component 基本组件(可以直接使用,要添加到容器中),button、TextArea、Lable等 容器Container 窗口Windows Frame窗口 弹窗Dialog 面板Panel 用于网页的Applet,现在已经不用了 ...
  • JAVA前三章预习总结

    2016-03-10 22:42:00
    经过一学期的JAVA学习,我已经基本了解JAVA程序设计的入门知识,为提高自己的操作水平,初步学习了前三章的...1.有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel、Frame、Applet. 2.LayoutManage:Flow...
  • FlowLayout是Pane和Applet默认的布局管理器,构件在容器中从上到下、从左到右进行放置,所以选项C为正确答案。BorderLayout是Wi......Eplan 的 3D 布局步骤一、当然首先要安装软件 Pro Panel,EPLAN Pro Panel:面向机箱...
  • 实验十四Swing图形界面组件 一理论部分 1.Layout Manager(布局管理器):布局管理器是一组类,实现 java.awt....(1)FlowLayout: 流布局(Applet和Panel的默认布局管理器):从左到右,从上到下逐行摆放。 (...
  • Java2游戏编程.pdf

    热门讨论 2013-01-31 15:20:46
    5.2 Applet和Application的比较 5.3 Applet的组成生命周期 5.4 一个Applet例子 5.5 运行Java Applets 5.6 通用AWT组件 5.6.1 按钮 5.6.2 单选按钮(Radio Button) 5.6.3 作出重要选择 5.6.4 循环播放声音文件 5.6.5...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

容器panel和applet