标题:还是监听器问题~
只看楼主
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
 问题点数:0 回复次数:8 
还是监听器问题~

/** 各位高手,帮我看看要怎么改啊~ 程序意图是在SFTFrame上点击按钮,然后FFrame就出现了并显示一句话(label)*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ShowFrameTest
{ public static void main(String[] arg)
{ JFrame f = new SFTFrame();
f.show();
}
}

class SFTFrame extends JFrame
implements ActionListener
{ public SFTFrame()
{ setSize(500, 350);
Container contentPane = getContentPane();
p = new JPanel();
contentPane.add(p);
button = new JButton("PRESS ME!");
p.add(button);
button.addActionListener(this);

}
public void actionPerformed(ActionEvent evt)
{ ff = new FFrame();
ff.show();
button.addActionListener(ff);
}
private JButton button;
public JFrame ff;
private JPanel p;
}

class FFrame extends JFrame
implements ActionListener
{ public FFrame()
{ setSize(100, 70);
setLocation(400, 400);
Container contentPane = getContentPane();
pp = new JPanel();
contentPane.add(pp);
label = new JLabel("YOU DID IT!~");
}
public void actionPerformed(ActionEvent evt)
{ pp.add(label);}
private JPanel pp;
private JLabel label;
}

搜索更多相关主题的帖子: 350 public import 
2005-12-08 14:52
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
得分:0 

button.addActionListener(ff);
这句话是什么意思?
你想让新的窗口上直接显示JLabel不用这样写的吧

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ShowFrameTest
{ public static void main(String[] arg)
{ JFrame f = new SFTFrame();
}
}

class SFTFrame extends JFrame
implements ActionListener
{ public SFTFrame()
{ setSize(500, 350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
p = new JPanel();
contentPane.add(p);
button = new JButton("PRESS ME!");
p.add(button);
button.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent evt)
{ ff = new FFrame();
ff.setVisible(true);
// button.addActionListener(ff);
}
private JButton button;
public JFrame ff;
private JPanel p;
}

class FFrame extends JFrame
{ public FFrame()
{ setSize(100, 70);
setLocation(400, 400);
Container contentPane = getContentPane();
pp = new JPanel();
contentPane.add(pp);
label = new JLabel("YOU DID IT!~");
pp.add(label);
}
private JPanel pp;
private JLabel label;
}


向着软件工程师的目标前进!
2005-12-08 20:34
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
得分:0 
谢了 斑竹兄。
但是我还有几个问题
1 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这句是不是使程序退出的?跟这句功能一样吗?
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent evt)
{ System.exit(0); });
是不是不加这句,即算关闭了窗口,程序仍在运行?
2 如果是这个程序是刚开始就有两个Frame 要用Frame1 implements ActionListener,而事件源在Frame2上,这该怎么办?

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2005-12-09 08:53
weizheng
Rank: 1
等 级:新手上路
威 望:2
帖 子:286
专家分:0
注 册:2005-4-21
得分:0 
第一个问题的意思, 在这里setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 这句话的意思应该是
在你创建的窗体上添加一个叉号,即是说只要你点击这个叉号就关闭。
不知道解释得是否充分

温和如玉,完美纯正。
2005-12-10 16:26
Chiriko
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-10
得分:0 
写的很好呢!

2005-12-11 00:04
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
得分:0 

同时有2个窗口,其中一个窗口上有一个按钮,当按了按钮使另一个按钮上的标签上显示文本么?你参考一下这段代码,我写的比较简单

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FrameTest
{
public static void main(String [] args)
{
Frame2 f2 = new Frame2("Frame2");
Frame1 f1 = new Frame1("Frame1",f2);
}
}

class Frame1 extends JFrame implements ActionListener
{
private Frame2 f;

private JButton btn;

public Frame1(String title,Frame2 f)
{
super(title);

this.f = f;

setLayout(new FlowLayout());

btn = new JButton("Press me");
btn.addActionListener(this);

getContentPane().add(btn);

setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
f.setLabelText();
}
}

class Frame2 extends JFrame
{
private JLabel lbl;

public Frame2(String title)
{
super(title);

lbl = new JLabel();
lbl.setHorizontalAlignment(JLabel.CENTER);

getContentPane().add(lbl);

setSize(500,300);
setVisible(true);
}

public void setLabelText()
{
lbl.setText("YOU DID IT!~");
}
}


向着软件工程师的目标前进!
2005-12-11 10:22
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
得分:0 
又是老大你帮我解决了~ 太谢谢了
我还有两个问题。
Frame1 f1 = new Frame1("Frame1",f2); Frame1是窗体的标题,f2是什么??算是子窗体吗?我查了下API 有这么一行
JFrame(String title, GraphicsConfiguration gc)
Creates a JFrame with the specified title and the specified GraphicsConfiguration of a screen device. specified GraphicsConfiguration 指定的构造???
看不太懂,请老大指点啊。
还有super(title); 这一句,是把这个参数传递给他的子类的意思吗?

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2005-12-12 09:13
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
得分:0 
Frame2 f2 = new Frame2("Frame2");
Frame1 f1 = new Frame1("Frame1",f2);
我在Frame1的类中定义的一个构造函数是public Frame1(String title,Frame2 f)
需要传一个Frame2类的实例进去
super(title);这句的意思是调用父类的构造函数

向着软件工程师的目标前进!
2005-12-12 10:05
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
得分:0 
还是不太懂 ,我自己再看看吧~

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2005-12-14 10:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-37305-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.340903 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved