JAVA 中的CardLayout的显示问题
答案:3 悬赏:0 手机版
解决时间 2021-11-19 23:19
- 提问者网友:呐年旧曙光
- 2021-11-19 02:16
JAVA 中的CardLayout的显示问题
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-11-19 03:38
必然不行,因为JFrame有一个默认的container,JFrame是没有同位体的。
必须得到JFrame的container,可以用.getContentPane()方法来获得,也可以用.setContentPane(Container)来设置。
修改的代码如下:
import java.awt.*;
import javax.swing.*;
public class BaiduTest{
static JFrame frm = new JFrame("hello-card-center");
public static void main(String args[]){
CardLayout card = new CardLayout(5,10);
frm.setLayout(card);
frm.setSize(200,150);
frm.add(new Button("Button1"),"c1");
frm.add(new Button("Button2"),"c2");
frm.add(new Button("Button3"),"c3");
card.show(frm.getContentPane(), "c2");//就这里改了
frm.setVisible(true);
}
}
必须得到JFrame的container,可以用.getContentPane()方法来获得,也可以用.setContentPane(Container)来设置。
修改的代码如下:
import java.awt.*;
import javax.swing.*;
public class BaiduTest{
static JFrame frm = new JFrame("hello-card-center");
public static void main(String args[]){
CardLayout card = new CardLayout(5,10);
frm.setLayout(card);
frm.setSize(200,150);
frm.add(new Button("Button1"),"c1");
frm.add(new Button("Button2"),"c2");
frm.add(new Button("Button3"),"c3");
card.show(frm.getContentPane(), "c2");//就这里改了
frm.setVisible(true);
}
}
全部回答
- 1楼网友:孤独入客枕
- 2021-11-19 06:13
同意一楼的建议 必须使用.getContentPane()来得到JFrame的容器
- 2楼网友:荒野風
- 2021-11-19 04:49
import java.awt.CardLayout;
import javax.swing.*;
public class CenterPanel {
static JFrame frm = new JFrame("hello-card-center");
public static void main(String args[]) {
CardLayout card = new CardLayout(5, 10);
JPanel jp = new JPanel();
jp.setLayout(card);
frm.setSize(200, 150);
jp.add(new JButton("Button1"), "c1");
jp.add(new JButton("Button2"), "c2");
jp.add(new JButton("Button3"), "c3");
card.show(jp, "c2");
frm.add(jp);
frm.setVisible(true);
}
}
这是我修改后的代码,你参考一下。
1.Frame、Button是awt包里面的重量级组件而JFrame、JBtton、JPanel为swing包里面的轻量级组件。
2.重量级组件和轻量级组件不要混用,不然会出现错误。!!!!!!!
3.一般给JFrame(顶层容器)中放jpanel、JTabbedPane等,而将其他小组件(如jbutton)放在jpanel中,并给jpanel设置布局管理,如Cardlayout。
import javax.swing.*;
public class CenterPanel {
static JFrame frm = new JFrame("hello-card-center");
public static void main(String args[]) {
CardLayout card = new CardLayout(5, 10);
JPanel jp = new JPanel();
jp.setLayout(card);
frm.setSize(200, 150);
jp.add(new JButton("Button1"), "c1");
jp.add(new JButton("Button2"), "c2");
jp.add(new JButton("Button3"), "c3");
card.show(jp, "c2");
frm.add(jp);
frm.setVisible(true);
}
}
这是我修改后的代码,你参考一下。
1.Frame、Button是awt包里面的重量级组件而JFrame、JBtton、JPanel为swing包里面的轻量级组件。
2.重量级组件和轻量级组件不要混用,不然会出现错误。!!!!!!!
3.一般给JFrame(顶层容器)中放jpanel、JTabbedPane等,而将其他小组件(如jbutton)放在jpanel中,并给jpanel设置布局管理,如Cardlayout。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯