import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.io.File;public class full_Frame extends JFrame {
    BorderLayout borderLayout1 = new BorderLayout();
    static Timer AutoTimer;
    ImageIcon icon = new ImageIcon("./src/image/1.jpg");
    JLabel jLabel1 = new JLabel(icon);
    private String[] getFile()
      {
              File f=new File("./src/image/");
              return f.list();
      }
      int i=1;
      String[] files=getFile();    public full_Frame() {        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
   public void jbInit() throws Exception {
        getContentPane().setLayout(borderLayout1);        this.getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER);        AutoTimer = new Timer(3000, new ActionListener() {           public void actionPerformed(ActionEvent e) {
               if (i ==files.length-1)
               i = 1;
               icon = new ImageIcon("./src/image/" + files[i]);
               jLabel1.setIcon(icon);
               jLabel1.repaint();
               i++;
           }
       });
     final JFrame fram = new JFrame("full screen");
     fram.getContentPane().add(jLabel1, BorderLayout.CENTER);
     fram.setExtendedState(JFrame.MAXIMIZED_BOTH);
     fram.setAlwaysOnTop(true);
     fram.setUndecorated(true);
     fram.setVisible(true);     AutoTimer.start();     fram.addKeyListener(new KeyAdapter() {
         public void keyPressed(KeyEvent e) {
             if (e.getKeyCode() == KeyEvent.VK_ESCAPE||e.getKeyCode() == KeyEvent.VK_C) {                 fram.setVisible(false);
                 fram.dispose();
                 AutoTimer.stop();
             }
         }
     });
    }
}
////////////////////////////////////

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.BorderLayout;
    import javax.swing.BorderFactory;
    import java.awt.Color;
    import javax.swing.border.TitledBorder;public class Player_Frame extends JFrame {
        
        JPanel Pan;
        BorderLayout borderLayout1 = new BorderLayout();
        JPanel jPanel1 = new JPanel();
        JButton jBuDown = new JButton();
        JButton jBuUp = new JButton();
        JButton jBuLast = new JButton();
        JButton jBuFirst = new JButton();
        JButton jBuAuto = new JButton();
        JSplitPane jSplitPane1 = new JSplitPane();
        JScrollPane jScrollPane1 = new JScrollPane();
        JScrollPane jScrollPane2 = new JScrollPane();    static Timer AutoTimer;    JTree jTree1 = new JTree();
        ImageIcon icon = new ImageIcon("./src/image/1.jpg");
        JLabel jLabel1 = new JLabel(icon);
      
        public String[] getFile()
          {
                  File f=new File("./src/image/");
                  return f.list();
          }
          int i=1;
          String[] files=getFile();    TitledBorder titledBorder1 = new TitledBorder("");
        TitledBorder titledBorder2 = new TitledBorder("");
        JTextArea jTextArea1 = new JTextArea();
        JTextField jTextField1 = new JTextField(3);
        JButton jButShow = new JButton();    public Player_Frame() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();        } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public void jbInit() throws Exception {        Pan = (JPanel) getContentPane();
            Pan.setLayout(borderLayout1);
            setSize(new Dimension(690, 400));
            setTitle("Photo_Player");
            jBuDown.setBackground(SystemColor.inactiveCaptionBorder);
            jBuDown.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jBuDown.setBorder(BorderFactory.createLineBorder(Color.black));
            jBuDown.setPreferredSize(new Dimension(80, 25));
            jBuDown.setText("Down");
            jBuDown.addActionListener(new Player_Frame_jBuDown_actionAdapter(this));
            jBuUp.setBackground(SystemColor.inactiveCaptionText);
            jBuUp.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jBuUp.setForeground(Color.red);
            jBuUp.setBorder(BorderFactory.createLineBorder(Color.black));
            jBuUp.setPreferredSize(new Dimension(80, 25));
            jBuUp.setText("Up");
            jBuUp.addActionListener(new Player_Frame_jBuUp_actionAdapter(this));
            jBuLast.setBackground(UIManager.getColor("ToolBar.background"));
            jBuLast.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jBuLast.setBorder(BorderFactory.createLineBorder(Color.black));
            jBuLast.setPreferredSize(new Dimension(80, 25));
            jBuLast.setText("Last");
            jBuLast.addActionListener(new Player_Frame_jBuLast_actionAdapter(this));
            jBuFirst.setBackground(Color.lightGray);
            jBuFirst.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jBuFirst.setForeground(Color.red);
            jBuFirst.setBorder(BorderFactory.createLineBorder(Color.black));
            jBuFirst.setPreferredSize(new Dimension(80, 25));
            jBuFirst.setIcon(null);
            jBuFirst.setText("First");
            jBuFirst.addActionListener(new Player_Frame_jBuFrist_actionAdapter(this));
            jBuAuto.setBackground(Color.lightGray);
            jBuAuto.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jBuAuto.setForeground(Color.red);
            jBuAuto.setBorder(BorderFactory.createLineBorder(Color.black));
            jBuAuto.setPreferredSize(new Dimension(80, 25));
            jBuAuto.setActionCommand("AutoRun");
            jBuAuto.setText("AutoRun");
            jBuAuto.addActionListener(new Player_Frame_jBuAuto_actionAdapter(this));
            jLabel1.setText("");
            jPanel1.setBackground(Color.green);
            jPanel1.setBorder(BorderFactory.createLoweredBevelBorder());
            jTextArea1.setSelectionStart(5);
            jTextField1.setMaximumSize(new Dimension(5, 5));
            jTextField1.setSelectedTextColor(Color.lightGray);
            jTextField1.setSelectionColor(Color.white);
            jTextField1.setSelectionEnd(4);
            jButShow.setBackground(Color.white);
            jButShow.setFont(new java.awt.Font("黑体", Font.PLAIN, 16));
            jButShow.setBorder(BorderFactory.createLineBorder(Color.black));
            jButShow.setPreferredSize(new Dimension(80, 25));
            jButShow.setText("Show");
            jButShow.addActionListener(new Player_Frame_jButShow_actionAdapter(this));
            jPanel1.add(jBuFirst);
            jPanel1.add(jBuLast);
            jPanel1.add(jBuUp);
            jPanel1.add(jBuDown);
            jPanel1.add(jBuAuto);
            jPanel1.add(jTextArea1);
            jPanel1.add(jTextField1);
            jPanel1.add(jButShow);
            Pan.add(jSplitPane1, java.awt.BorderLayout.CENTER);
            jSplitPane1.add(jScrollPane1, JSplitPane.RIGHT);
            jScrollPane1.getViewport().add(jLabel1);
            jSplitPane1.add(jScrollPane2, JSplitPane.LEFT);
            Pan.add(jPanel1, java.awt.BorderLayout.SOUTH);
            jScrollPane2.getViewport().add(jTree1);
            jBuUp.setEnabled(false);
            jBuFirst.setEnabled(false);        String A=" "+i;
            jTextField1.setText(A);
      

  2.   

    AutoTimer = new Timer(3000, new ActionListener(){            public void actionPerformed(ActionEvent e) {
                   // if (i ==files.length)
                   if (i ==files.length-1)
                    i = 1;
                    //i=files.length%i;
                    icon = new ImageIcon("./src/image/" + files[i]);
                    jLabel1.setIcon(icon);
                    jLabel1.repaint();
                    i++;            }
            });    }    public void jBuFrist_actionPerformed(ActionEvent e) {
            if (i >1 && i <=files.length) {
                i = 1;
                icon = new ImageIcon("./src/image/" + files[i]);
                jLabel1.setIcon(icon);
                jBuUp.setEnabled(false);
                jBuFirst.setEnabled(false);
                jBuDown.setEnabled(true);
                jBuLast.setEnabled(true);
                String A=" "+i;
                jTextField1.setText(A);
            }
        }    public void jBuLast_actionPerformed(ActionEvent e) {
            if (i >=1 && i <=files.length) {
               // i = files.length;
               i = files.length-2;
                icon = new ImageIcon("./src/image/" + files[i]);
                jLabel1.setIcon(icon);
                jBuDown.setEnabled(false);
                jBuUp.setEnabled(true);
                jBuFirst.setEnabled(true);
                jBuLast.setEnabled(false);
                String A=" "+i;
                jTextField1.setText(A);
            }
        }    public void jBuUp_actionPerformed(ActionEvent e) {
            if (i >=1 && i < files.length) {
                jBuDown.setEnabled(true);
                jBuUp.setEnabled(true);
                jBuFirst.setEnabled(true);
                jBuLast.setEnabled(true);
                --i;
              if (i == 1) {
                    jBuUp.setEnabled(false);
                    jBuFirst.setEnabled(false);
                }
                icon = new ImageIcon("./src/image/" + files[i]);
                jLabel1.setIcon(icon);
                String A=" "+i;
                jTextField1.setText(A);
            }
        }    public void jBuDown_actionPerformed(ActionEvent e) {
            if (i >=1 && i <=files.length) {
                 jBuDown.setEnabled(true);
                 jBuUp.setEnabled(true);
                 jBuFirst.setEnabled(true);
                 jBuLast.setEnabled(true);
                 ++i;
             //  if (i==(files.length-1)) {
               if (i==(files.length-2)) {
                 jBuDown.setEnabled(false);
                 jBuLast.setEnabled(false);
                  }
                 icon = new ImageIcon("./src/image/" + files[i]);
                 jLabel1.setIcon(icon);
                 String A=" "+i;
                jTextField1.setText(A);
             }
        }
        public void jBuAuto_actionPerformed(ActionEvent e) {                 new full_Frame();
                            
              }    public void jButShow_actionPerformed(ActionEvent e) {
                String b=jTextField1.getText();
                try{
                    int x = Integer.parseInt(b.trim());
                    if(x>files.length){
                    x=files.length-2;
                    String A=" "+x;
                    jTextField1.setText(A);
                    }
                    if(x<=0){
                    x=1;
                    String A=" "+x;
                    jTextField1.setText(A);
                   }
                    icon = new ImageIcon("./src/image/" + files[x]);
                    jLabel1.setIcon(icon);
                }catch(IndexOutOfBoundsException ae){
                 System.out.println(e.toString());
                }
        }
    }class Player_Frame_jButShow_actionAdapter implements ActionListener {
        private Player_Frame adaptee;
        Player_Frame_jButShow_actionAdapter(Player_Frame adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButShow_actionPerformed(e);
        }
    }
    class Player_Frame_jBuAuto_actionAdapter implements ActionListener {
                private Player_Frame adaptee;
                Player_Frame_jBuAuto_actionAdapter(Player_Frame adaptee) {
                    this.adaptee = adaptee;
                }            public void actionPerformed(ActionEvent e) {
                    adaptee.jBuAuto_actionPerformed(e);
                }
            }
            class Player_Frame_jBuDown_actionAdapter implements ActionListener {
                private Player_Frame adaptee;
                Player_Frame_jBuDown_actionAdapter(Player_Frame adaptee) {
                    this.adaptee = adaptee;
                }            public void actionPerformed(ActionEvent e) {
                    adaptee.jBuDown_actionPerformed(e);
                }
            }
            class Player_Frame_jBuUp_actionAdapter implements ActionListener {
                private Player_Frame adaptee;
                Player_Frame_jBuUp_actionAdapter(Player_Frame adaptee) {
                    this.adaptee = adaptee;
                }            public void actionPerformed(ActionEvent e) {
                    adaptee.jBuUp_actionPerformed(e);
                }
            }
            class Player_Frame_jBuLast_actionAdapter implements ActionListener {
                private Player_Frame adaptee;
                Player_Frame_jBuLast_actionAdapter(Player_Frame adaptee) {
                    this.adaptee = adaptee;
                }            public void actionPerformed(ActionEvent e) {
                    adaptee.jBuLast_actionPerformed(e);
                }
            }
            class Player_Frame_jBuFrist_actionAdapter implements ActionListener {
                private Player_Frame adaptee;
                Player_Frame_jBuFrist_actionAdapter(Player_Frame adaptee) {
                    this.adaptee = adaptee;
                }            public void actionPerformed(ActionEvent e) {
                    adaptee.jBuFrist_actionPerformed(e);
                }
            }
      

  3.   

    其实我的问题只有一个,如何实现 Player_Frame 和 full_Frame 实现通信?让Player_Frame 和Player_Frame 中的i实现同步化...目的是让全屏播放退出来以后,能让全屏退出的那张图片放在原来的框架上.(或下翻到第i张时,全屏的那张就从第i张开始全屏播放)....
    我也知道,也许没有人回答的,哎.
      

  4.   

    在full_Frame的监听键盘事件那边把当前图片反馈给Player_Frame
      

  5.   

    你这种情况需要使用继承,即编写一个基类 BaseFrame extends JFrame 将i和getfile等可重用的方法和成员变量定义为公有的或受保护的
    public abstract class BaseFrame extends JFrame
    {
        protected int i=1;
        protected String[] files=getFile();   public String[] getFile()
          {
                  File f=new File("./src/image/");
                  return f.list();
          }
       }然后full_frame 和player_frame 都可以继承于BaseFrame
    另外,你的代码没有注释,同时命名规范不标准 类应该这样定义 FullFrame PlayerFrame 才标准
      

  6.   

    对于你的i需要同步,可以使用静态成员的方式来解决。
     protected static int i=1;
    那么,当任何一个子类的实例更改了i值,其它实例能获取到最新的值
      

  7.   

    volkia(MonkeyKing) 
    ..................................
    静态变量
    或者将一个窗体作为参数传入另一窗体.这个 -------->将一个窗体作为参数传入另一窗体.
    讲一下啊,..代码.....说明