java的卡片式对话框
当前位置:以往代写 > JAVA 教程 >java的卡片式对话框
2019-06-14

java的卡片式对话框

java的卡片式对话框

在本章的前部,向我们先容了老式的CardLayout,而且留意到我们奈何去打点我们所有的卡片开关。有趣的是,有人此刻认为这是一种不错的设计。幸运的是,Swing用JTabbedPane对它举办了修补,由JTabbedPane来处理惩罚这些卡片,开关和其它的任何事物。比拟CardLayout和JTabbedPane,我们会发明惊人的差别。
下面的措施例子十分的有趣,因为它操作了前面例子的设计。它们都是做为JPanel的衍生物来构建的,因此这个措施将安顿前面的每个例子到它本身在JTabbedPane的窗格中。我们会看到操作RTTI制造的措施十分的小巧精美:
 

//: Tabbed.java
// Using tabbed panes
package c13.swing;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class Tabbed extends JPanel {
  static Object[][] q = {
    { "Felix", Borders.class },
    { "The Professor", Buttons.class },
    { "Rock Bottom", ButtonGroups.class },
    { "Theodore", Faces.class },
    { "Simon", Menus.class },
    { "Alvin", Popup.class },
    { "Tom", ListCombo.class },
    { "Jerry", Progress.class },
    { "Bugs", Trees.class },
    { "Daffy", Table.class },
  };
  static JPanel makePanel(Class c) {
    String title = c.getName();
    title = title.substring(
      title.lastIndexOf('.') + 1);
    JPanel sp = null;
    try {
      sp = (JPanel)c.newInstance();
    } catch(Exception e) {
      System.out.println(e);
    }
    sp.setBorder(new TitledBorder(title));
    return sp;
  }
  public Tabbed() {
    setLayout(new BorderLayout());
    JTabbedPane tabbed = new JTabbedPane();
    for(int i = 0; i < q.length; i++)
      tabbed.addTab((String)q[i][0], 
        makePanel((Class)q[i][1]));
    add(tabbed, BorderLayout.CENTER);
    tabbed.setSelectedIndex(q.length/2);
  }
  public static void main(String args[]) {
    Show.inFrame(new Tabbed(),460,350);
  }
} ///:~

再者,我们可以留意到利用的数组结构式样:第一个元素是被置放在卡片上的String,第二个元素是将被显示在对应窗格上JPanel类。在Tabbed()构建器里,我们可以看到两个重要的JTabbedPane要领被利用:addTab()插入一个新的窗格,setSelectedIndex()选择一个窗格并从它开始。(一个在中间被选中的窗格证明我们不必从第一个窗格开始)。
当我们挪用addTab()要领时,我们为它提供卡片的String和一些组件(也就是说,一个AWT组件,而不是一个来自AWT的JComponent)。这个组件会被显示在窗格中。一旦我们这样做了,自然而然的就不需要更多打点了——JTabbedPane会为我们处理惩罚其它的任何事。
makePanel()要领获取我们想建设的类Class工具和用newInstance()去建设并造型为JPanel(虽然,假定那些类是必需从JPanel担任才气增加的类,除非在这一节中为措施例子的布局所利用)。它增加了一个包罗类名并返回功效的TitledBorder,以作为一个JPanel在addTab()被利用。
当我们运行措施时,我们会发明假如卡片太多,填满了一行,JTabbedPane自动地将它们会萃起来。

    关键字:

在线提交作业