读书人

报着希望看有人回答没100分,顶者都

发布时间: 2012-01-30 21:15:58 作者: rapoo

报着希望,看有人回答没,100分,顶者都有分吧 看以下程序,如何实现2个框架的通信?
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();
}
}
});
}
}
////////////////////////////////////


[解决办法]
帮你顶下。。。
[解决办法]
全局变量?
或者使用属性文件存放,每次取i的时候都从属性文件中获取,更改时也更新。
不过,这两种方法都有点笨,但应该可以解决问题。
[解决办法]
在full_Frame的监听键盘事件那边把当前图片反馈给Player_Frame
[解决办法]
再用一个单字模式的类,里面提供一个静态的变量i
这样应该可以实现共享吧!!!!!!!!!!!!!!
[解决办法]
绑顶
[解决办法]
用单态模式
[解决办法]
你这种情况需要使用继承,即编写一个基类 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 才标准

[解决办法]
静态变量
或者将一个窗体作为参数传入另一窗体.
[解决办法]
代码好长,没时间看啊。
帮你顶上去吧。
[解决办法]
up
[解决办法]
UP
------解决方案--------------------


UP
[解决办法]
不会呀帮顶
[解决办法]
不会,帮你顶,记得给分啊 !
[解决办法]
GUI没弄过,纯顶~~
[解决办法]
我顶!我顶!我顶顶顶!

读书人网 >J2SE开发

热点推荐