怎样把多个Ftame最好的整合到一块?

解决方案 »

  1.   

    你是想在一个主窗体上添加多个Frame?那就使用InternalFrame吧,Java内部窗格。
      

  2.   

    是的,在一个主题窗口添加多个Frame,能不能给一段示例代码啊,我不太懂,谢谢!
      

  3.   

    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.border.*;
    import javax.swing.colorchooser.*;
    import javax.swing.filechooser.*;
    import javax.accessibility.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.beans.*;
    import java.util.*;
    import java.io.*;
    import java.applet.*;
    import java.net.*;public class InternalFrameDemo extends DemoModule {
        int windowCount = 0;
        JDesktopPane desktop = null;
        ImageIcon icon1, icon2, icon3, icon4;
        ImageIcon smIcon1, smIcon2, smIcon3, smIcon4;
        public Integer FIRST_FRAME_LAYER  = new Integer(1);
        public Integer DEMO_FRAME_LAYER   = new Integer(2);
        public Integer PALETTE_LAYER     = new Integer(3);
        public int FRAME0_X = 15;
        public int FRAME0_Y = 280;
        public int FRAME0_WIDTH = 320;
        public int FRAME0_HEIGHT = 230;
        public int FRAME_WIDTH = 225;
        public int FRAME_HEIGHT = 150;
        public int PALETTE_X = 375;
        public int PALETTE_Y = 20;
        public int PALETTE_WIDTH = 260;
        public int PALETTE_HEIGHT = 260;
        JCheckBox windowResizable = null;
        JCheckBox windowClosable = null;
        JCheckBox windowIconifiable = null;
        JCheckBox windowMaximizable = null;
        JTextField windowTitleField = null;
        JLabel windowTitleLabel = null;    public static void main(String[] args) {
    InternalFrameDemo demo = new InternalFrameDemo(null);
    demo.mainImpl();
        }    public InternalFrameDemo(SwingSet2 swingset) {
    super(swingset, "InternalFrameDemo", "toolbar/JDesktop.gif");
    icon1 = createImageIcon("ImageClub/misc/fish.gif", getString("InternalFrameDemo.fish"));
    icon2 = createImageIcon("ImageClub/misc/moon.gif", getString("InternalFrameDemo.moon"));
    icon3 = createImageIcon("ImageClub/misc/sun.gif",  getString("InternalFrameDemo.sun"));
    icon4 = createImageIcon("ImageClub/misc/cab.gif",  getString("InternalFrameDemo.cab")); smIcon1 = createImageIcon("ImageClub/misc/fish_small.gif", getString("InternalFrameDemo.fish"));
    smIcon2 = createImageIcon("ImageClub/misc/moon_small.gif", getString("InternalFrameDemo.moon"));
    smIcon3 = createImageIcon("ImageClub/misc/sun_small.gif",  getString("InternalFrameDemo.sun"));
    smIcon4 = createImageIcon("ImageClub/misc/cab_small.gif",  getString("InternalFrameDemo.cab"));
    desktop = new JDesktopPane();
    getDemoPanel().add(desktop, BorderLayout.CENTER);
    createInternalFramePalette();
    JInternalFrame frame1 = createInternalFrame(icon1, FIRST_FRAME_LAYER, 1, 1);
    frame1.setBounds(FRAME0_X, FRAME0_Y, FRAME0_WIDTH, FRAME0_HEIGHT);
    createInternalFrame(icon1, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon3, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon4, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon2, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
        }    public JInternalFrame createInternalFrame(Icon icon, Integer layer, int width, int height) {
    JInternalFrame jif = new JInternalFrame();
    if(!windowTitleField.getText().equals(getString("InternalFrameDemo.frame_label"))) {
        jif.setTitle(windowTitleField.getText() + "  ");
    } else {
        jif = new JInternalFrame(getString("InternalFrameDemo.frame_label") + " " + windowCount + "  ");
    }
    jif.setClosable(windowClosable.isSelected());
    jif.setMaximizable(windowMaximizable.isSelected());
    jif.setIconifiable(windowIconifiable.isSelected());
    jif.setResizable(windowResizable.isSelected()); jif.setBounds(20*(windowCount%10), 20*(windowCount%10), width, height);
    jif.setContentPane(new ImageScroller(this, icon, 0, windowCount));
    windowCount++;
    desktop.add(jif, layer);  
    try {
        jif.setSelected(true);
    } catch (java.beans.PropertyVetoException e2) {
    }
    jif.show();
    return jif;
        }    public JInternalFrame createInternalFramePalette() {
    JInternalFrame palette = new JInternalFrame(
        getString("InternalFrameDemo.palette_label")
    );
    palette.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
    palette.getContentPane().setLayout(new BorderLayout());
    palette.setBounds(PALETTE_X, PALETTE_Y, PALETTE_WIDTH, PALETTE_HEIGHT);
    palette.setResizable(true);
    palette.setIconifiable(true);
    desktop.add(palette, PALETTE_LAYER);
    JButton b1 = new JButton(smIcon1);
    JButton b2 = new JButton(smIcon2);
    JButton b3 = new JButton(smIcon3);
    JButton b4 = new JButton(smIcon4);
    b1.addActionListener(new ShowFrameAction(this, icon1));
    b2.addActionListener(new ShowFrameAction(this, icon2));
    b3.addActionListener(new ShowFrameAction(this, icon3));
    b4.addActionListener(new ShowFrameAction(this, icon4));
    JPanel p = new JPanel();
    p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
    JPanel buttons1 = new JPanel();
    buttons1.setLayout(new BoxLayout(buttons1, BoxLayout.X_AXIS));
    JPanel buttons2 = new JPanel();
    buttons2.setLayout(new BoxLayout(buttons2, BoxLayout.X_AXIS));
    buttons1.add(b1);
    buttons1.add(Box.createRigidArea(HGAP15));
    buttons1.add(b2);
    buttons2.add(b3);
    buttons2.add(Box.createRigidArea(HGAP15));
    buttons2.add(b4);
    p.add(Box.createRigidArea(VGAP10));
    p.add(buttons1);
    p.add(Box.createRigidArea(VGAP15));
    p.add(buttons2);
    p.add(Box.createRigidArea(VGAP10));
    palette.getContentPane().add(p, BorderLayout.NORTH);
    p = new JPanel() {
        Insets insets = new Insets(10,15,10,5);
        public Insets getInsets() {
    return insets;
        }
    };
    p.setLayout(new GridLayout(1,2));
            Box box = new Box(BoxLayout.Y_AXIS);
    windowResizable   = new JCheckBox(getString("InternalFrameDemo.resizable_label"), true);
    windowIconifiable = new JCheckBox(getString("InternalFrameDemo.iconifiable_label"), true);
            box.add(Box.createGlue());
    box.add(windowResizable);
    box.add(windowIconifiable);
            box.add(Box.createGlue());
            p.add(box);
            box = new Box(BoxLayout.Y_AXIS);
    windowClosable    = new JCheckBox(getString("InternalFrameDemo.closable_label"), true);
    windowMaximizable = new JCheckBox(getString("InternalFrameDemo.maximizable_label"), true);
            box.add(Box.createGlue());
    box.add(windowClosable);
    box.add(windowMaximizable);
            box.add(Box.createGlue());
            p.add(box);
    palette.getContentPane().add(p, BorderLayout.CENTER);
    p = new JPanel() {Insets insets = new Insets(0,0,10,0);public Insets getInsets() {return insets;}};
    windowTitleField = new JTextField(getString("InternalFrameDemo.frame_label"));
    windowTitleLabel = new JLabel(getString("InternalFrameDemo.title_text_field_label")); p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
    p.add(Box.createRigidArea(HGAP5));
    p.add(windowTitleLabel, BorderLayout.WEST);
    p.add(Box.createRigidArea(HGAP5));
    p.add(windowTitleField, BorderLayout.CENTER);
    p.add(Box.createRigidArea(HGAP5));
    palette.getContentPane().add(p, BorderLayout.SOUTH);
    palette.show();
    return palette;
        }class ShowFrameAction extends AbstractAction {InternalFrameDemo demo;Icon icon;public ShowFrameAction(InternalFrameDemo demo, Icon icon) this.demo = demo;this.icon = icon;}
    public void actionPerformed(ActionEvent e) {demo.createInternalFrame(icon,getDemoFrameLayer(),getFrameWidth(),getFrameHeight());}}public int getFrameWidth() {return FRAME_WIDTH;}public int getFrameHeight() {return FRAME_HEIGHT;}public Integer getDemoFrameLayer() {return DEMO_FRAME_LAYER;}
        
    class ImageScroller extends JScrollPane {public ImageScroller(InternalFrameDemo demo, Icon icon, int layer, int count) {super();JPanel p = new JPanel();p.setBackground(Color.white);p.setLayout(new BorderLayout() );p.add(new JLabel(icon),BorderLayout.CENTER);getViewport().add(p);getHorizontalScrollBar().setUnitIncrement(10);getVerticalScrollBar().setUnitIncrement(10);}public Dimension getMinimumSize() {return new Dimension(25, 25);}}
        
    void updateDragEnabled(boolean dragEnabled) {windowTitleField.setDragEnabled(dragEnabled);}
    }Sun的Demo中就有