java 卡片布局管理器的一点小问题 本帖最后由 albertwmm 于 2012-09-08 11:04:11 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、Frame默认的布局管理器是BorderLayout,容器都有默认布局管理器,所以不用设置,这个例子是卡片布局,所以要new 出来2、CardLayoutDemo 继承 Frame 3、 new CardLayoutDemo("ABCD"); 这句就已经new 了一个CardLayoutDemo对象。然后调用构造方法 main里的这句 除了给窗口一个名字 还有其他用吗?有什么需要调用什么的吗? import java.awt.*;import java.awt.event.*;public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA"); private Button b2=new Button("BB"); private Button b3=new Button("CC"); private Frame f; private CardLayout cl=new CardLayout(); //卡片管理器cl private Panel cards=new Panel(); //容器cards public CardLayoutDemo(String s){ } public static void main(String[] args) { CardLayoutDemo cld=new CardLayoutDemo("ABC"); cld.init(); } public void init(){ f.setLayout(new BorderLayout()); f.setSize(500,500); Panel p=new Panel(); p.setLayout(new FlowLayout()); b1.addMouseListener(this); b2.addMouseListener(this); b3.addMouseListener(this); p.add(b1); p.add(b2); p.add(b3); f.add(BorderLayout.NORTH,p); cards.setLayout(new CardLayout()); //设置容器为卡片管理器 cards.add(new Button("AAA")); cards.add(new Button("BBB")); cards.add(new Button("CCC")); f.add(BorderLayout.CENTER,cards); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ public void WindowClosing(WindowEvent evt){ f.setVisible(false); f.dispose(); System.exit(0); } }); } public void mouseClicked(MouseEvent e) { if(e.getSource()==b1){ cl.first(cards); } else if(e.getSource()==b2){ cl.first(cards); cl.next(cards); } else if(e.getSource()==b3){ cl.last(cards); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }}这是我自己写的 Eclipse 没报错, 却运行不起来。怎么改改啊 我改了下 可以运行了。。 但是我实在不清楚 main方法中的句子到底有什么用。。import java.awt.*;import java.awt.event.*;public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA"); private Button b2=new Button("BB"); private Button b3=new Button("CC"); private Frame f=new Frame("ssssss"); private CardLayout cl=new CardLayout(); //实例化一个卡片管理器cl private Panel cards=new Panel(); //容器cards public CardLayoutDemo(String s){ init(); } public static void main(String[] args) { new CardLayoutDemo("xxxxx"); } public void init(){ f.setLayout(new BorderLayout()); f.setSize(500,500); Panel p=new Panel(); p.setLayout(new FlowLayout()); b1.addMouseListener(this); b2.addMouseListener(this); b3.addMouseListener(this); p.add(b1); p.add(b2); p.add(b3); f.add(BorderLayout.NORTH,p); cards.setLayout(cl); //设置容器cards为卡片管理器 cards.add("AAaA",new Button("AAA")); cards.add("BBBb",new Button("BBB")); cards.add("CCCC",new Button("CCC")); f.add(BorderLayout.CENTER,cards); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ public void WindowClosing(WindowEvent evt){ f.setVisible(false); f.dispose(); System.exit(0); } }); } public void mouseClicked(MouseEvent e) { if(e.getSource()==b1){ cl.first(cards); } else if(e.getSource()==b2){ cl.first(cards); cl.next(cards); } else if(e.getSource()==b3){ cl.last(cards); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }}运行出来 标题也是sssss 不是main方法中的xxxx 这个句子到底有什么用啊?用在哪了啊? 你这个CardLayoutDemo的实例,没有继承Frame,也没有Frame的成员不会'有反应' import java.awt.*;import java.awt.event.*;public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA"); private Button b2=new Button("BB"); private Button b3=new Button("CC"); private Frame f=new Frame("sssssss"); private CardLayout cl=new CardLayout(); //实例化一个卡片管理器cl private Panel cards=new Panel(); //容器cards public CardLayoutDemo(String s){ init(); } public static void main(String[] args) { new CardLayoutDemo("xxxx"); } public void init(){ f.setLayout(new BorderLayout()); f.setSize(500,500); Panel p=new Panel(); p.setLayout(new FlowLayout()); b1.addMouseListener(this); b2.addMouseListener(this); b3.addMouseListener(this); p.add(b1); p.add(b2); p.add(b3); f.add(BorderLayout.NORTH,p); cards.setLayout(cl); //设置容器cards为卡片管理器 cards.add("AAaA",new Button("AAA")); cards.add("BBBb",new Button("BBB")); cards.add("CCCC",new Button("CCC")); f.add(BorderLayout.CENTER,cards); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ public void WindowClosing(WindowEvent evt){ f.setVisible(false); f.dispose(); System.exit(0); } }); } public void mouseClicked(MouseEvent e) { if(e.getSource()==b1){ cl.first(cards); } else if(e.getSource()==b2){ cl.first(cards); cl.next(cards); } else if(e.getSource()==b3){ cl.last(cards); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }}代码我已经改好了 可以运行了。 但是我实在不知道 main方法中 句子有什么用。。标题也是Frame里的sssss 不是这句里的xxxx 第一个代码通过调用父类的构造函数 将 实例化时传入的参数 作为了Frame的标题你这个代码可以把参数 再传给init,然后在init中作为Frame创建时的参数,不过整个代码就没有原来的好,有点乱 1)new 个对象而已,用意就是创建个布局管理器罢了2)init方法里是一些初始化代码,你不觉得把初始化代码放在一个名为“初始化”的函数里很专业么?特别是在初始化代码较多的时候。3)同上4)这个布局管理器有点特别,他被设计成给每个容器加个标识,你切换视图的时候就用这个标识。 那个“firest Button”就是个标识而已~ 你愿意的话可以叫它“阿猫阿狗”,注意不要有重复的标识~ 我一直想不明白的是 为什么在main方法中 需要创建实例,而且只是创建实例? 创建了又什么都不干? 在cards中添加按钮 为什么需要些"first Button" 。为什么要写这个?能不写或随便写吗?这是为方便操作来定义的,只要可以明确区分就可以按自己要求定义 myeclise 的使用 编写java小程序 hibernate 映射 实体 原理 ,那位大哥解释一下。不胜感激! java中如何用正则表达式替换图片的地址? 程序启动后获取输入参数的问题(顶有分) 高分 解决jar打包文件问题。 comboBox怎样多选呀? 我想要关于语法的帮助文档 JAva的主要用来开发哪类软件呀,除了JAVA小程序以外? 菜鸟求救!!! Java界面开发中问题 简易QQ程序,怎么加多线程?
2、CardLayoutDemo 继承 Frame
3、 new CardLayoutDemo("ABCD"); 这句就已经new 了一个CardLayoutDemo对象。然后调用构造方法
import java.awt.*;
import java.awt.event.*;
public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
private Button b2=new Button("BB");
private Button b3=new Button("CC");
private Frame f;
private CardLayout cl=new CardLayout(); //卡片管理器cl
private Panel cards=new Panel(); //容器cards
public CardLayoutDemo(String s){
}
public static void main(String[] args) {
CardLayoutDemo cld=new CardLayoutDemo("ABC");
cld.init();
}
public void init(){
f.setLayout(new BorderLayout());
f.setSize(500,500);
Panel p=new Panel();
p.setLayout(new FlowLayout());
b1.addMouseListener(this);
b2.addMouseListener(this);
b3.addMouseListener(this);
p.add(b1);
p.add(b2);
p.add(b3);
f.add(BorderLayout.NORTH,p);
cards.setLayout(new CardLayout()); //设置容器为卡片管理器
cards.add(new Button("AAA"));
cards.add(new Button("BBB"));
cards.add(new Button("CCC"));
f.add(BorderLayout.CENTER,cards);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent evt){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
} public void mouseClicked(MouseEvent e) {
if(e.getSource()==b1){
cl.first(cards);
}
else if(e.getSource()==b2){
cl.first(cards);
cl.next(cards);
}
else if(e.getSource()==b3){
cl.last(cards);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}这是我自己写的 Eclipse 没报错, 却运行不起来。怎么改改啊
import java.awt.event.*;
public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
private Button b2=new Button("BB");
private Button b3=new Button("CC");
private Frame f=new Frame("ssssss");
private CardLayout cl=new CardLayout(); //实例化一个卡片管理器cl
private Panel cards=new Panel(); //容器cards
public CardLayoutDemo(String s){
init();
}
public static void main(String[] args) {
new CardLayoutDemo("xxxxx");
}
public void init(){
f.setLayout(new BorderLayout());
f.setSize(500,500);
Panel p=new Panel();
p.setLayout(new FlowLayout());
b1.addMouseListener(this);
b2.addMouseListener(this);
b3.addMouseListener(this);
p.add(b1);
p.add(b2);
p.add(b3);
f.add(BorderLayout.NORTH,p);
cards.setLayout(cl); //设置容器cards为卡片管理器
cards.add("AAaA",new Button("AAA"));
cards.add("BBBb",new Button("BBB"));
cards.add("CCCC",new Button("CCC"));
f.add(BorderLayout.CENTER,cards);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent evt){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
} public void mouseClicked(MouseEvent e) {
if(e.getSource()==b1){
cl.first(cards);
}
else if(e.getSource()==b2){
cl.first(cards);
cl.next(cards);
}
else if(e.getSource()==b3){
cl.last(cards);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
运行出来 标题也是sssss 不是main方法中的xxxx
这个句子到底有什么用啊?用在哪了啊?
import java.awt.*;
import java.awt.event.*;
public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
private Button b2=new Button("BB");
private Button b3=new Button("CC");
private Frame f=new Frame("sssssss");
private CardLayout cl=new CardLayout(); //实例化一个卡片管理器cl
private Panel cards=new Panel(); //容器cards
public CardLayoutDemo(String s){
init();
}
public static void main(String[] args) {
new CardLayoutDemo("xxxx");
}
public void init(){
f.setLayout(new BorderLayout());
f.setSize(500,500);
Panel p=new Panel();
p.setLayout(new FlowLayout());
b1.addMouseListener(this);
b2.addMouseListener(this);
b3.addMouseListener(this);
p.add(b1);
p.add(b2);
p.add(b3);
f.add(BorderLayout.NORTH,p);
cards.setLayout(cl); //设置容器cards为卡片管理器
cards.add("AAaA",new Button("AAA"));
cards.add("BBBb",new Button("BBB"));
cards.add("CCCC",new Button("CCC"));
f.add(BorderLayout.CENTER,cards);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent evt){
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
} public void mouseClicked(MouseEvent e) {
if(e.getSource()==b1){
cl.first(cards);
}
else if(e.getSource()==b2){
cl.first(cards);
cl.next(cards);
}
else if(e.getSource()==b3){
cl.last(cards);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}代码我已经改好了 可以运行了。 但是我实在不知道 main方法中 句子有什么用。。标题也是Frame里的sssss 不是这句里的xxxx
你这个代码可以把参数 再传给init,然后在init中作为Frame创建时的参数,不过整个代码就没有原来的好,有点乱
2)init方法里是一些初始化代码,你不觉得把初始化代码放在一个名为“初始化”的函数里很专业么?特别是在初始化代码较多的时候。
3)同上
4)这个布局管理器有点特别,他被设计成给每个容器加个标识,你切换视图的时候就用这个标识。 那个“firest Button”就是个标识而已~ 你愿意的话可以叫它“阿猫阿狗”,注意不要有重复的标识~
这是为方便操作来定义的,只要可以明确区分就可以按自己要求定义