关于窗口(继承了JFrame)中面板互换的问题! 你让Frame公用,而当点panel1加入panel1,panel2加入panel2 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将不显示的pane2设为不可见,pane2.setVisible(false); 。需要的时候再将pane2其设成 true ,pane1设成false,然后重新布局就OK拉,我在做back or next时就是这样做的。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame { JMenuBar menuBar; JMenu menu1,menu2,menu3; JMenuItem menuItem1,menuItem2; JPanel pane,pane1,pane2; int i; public Test() { jbInit(); } public void jbInit(){ menuBar = new JMenuBar(); menu1 = new JMenu("菜单"); menu2 = new JMenu("随便"); menu3 = new JMenu("随便"); menuItem1 = new JMenuItem("pane1"); menuItem2 = new JMenuItem("pane2"); pane = new JPanel(); pane1 = new JPanel(); pane2 = new JPanel(); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); menuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { menuItem1_actionPerformed(e); } }); menuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { menuItem1_actionPerformed(e); } }); this.getContentPane().add(menuBar, BorderLayout.NORTH); this.getContentPane().add(pane, BorderLayout.CENTER); pane.add(pane1); pane.add(pane2); pane1.setVisible(true); pane2.setVisible(false); menuBar.add(menu1, null); menuBar.add(menu2, null); menuBar.add(menu3, null); menu1.add(menuItem1); menu1.add(menuItem2); pane1.add(new JLabel("Pane1"), null); pane2.add(new JLabel("pane2"), null); this.setSize(300,200); this.setVisible(true); } public static void main(String[] args) { new Test(); } void menuItem1_actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("pane1")){ pane1.setVisible(true); pane2.setVisible(false); pane.invalidate(); pane.validate(); } if(e.getActionCommand().equals("pane2")){ pane2.setVisible(true); pane1.setVisible(false); pane.invalidate(); pane.validate(); } }} 将不显示的pane2设为不可见,pane2.setVisible(false); 。需要的时候再将pane2其设成 true ,pane1设成false,然后重新布局就OK拉,我在做back or next时就是这样做的。不错 我这样做了,但是没办法实现,因为其中一个pane中有一个JScrollPane(textarea). 而且我的两个JPanel都是在一个窗口的BorderLayou.CENTER! 把代码发给我,我晚上帮你看看[email protected] 一个JFrame的问题,急! 求教-泛化Class对象在容器中的存贮问题 多级索引算法 急急急!!!! JCreator中为什么点不出J2EE的包?比如:servlet。 java实现网页控件坐标 用java能不能写按键精灵啊 两简单问题:在线等,就给分。 有那位高手能解决这个问题,高分相赠! 我用JBUILDER作的JPUPUPMEUN show(jpane,getx,gety) 的显示位置老在鼠标下一大截,在JPANE的左上角击鼠标右键出现多余显示 送分啦!!! ++++ 按照书本打一程序,报错,请帮忙 ++++ 寻书:《java2实用教程》!
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame {
JMenuBar menuBar;
JMenu menu1,menu2,menu3;
JMenuItem menuItem1,menuItem2;
JPanel pane,pane1,pane2;
int i; public Test() {
jbInit();
}
public void jbInit(){
menuBar = new JMenuBar();
menu1 = new JMenu("菜单");
menu2 = new JMenu("随便");
menu3 = new JMenu("随便");
menuItem1 = new JMenuItem("pane1");
menuItem2 = new JMenuItem("pane2");
pane = new JPanel();
pane1 = new JPanel();
pane2 = new JPanel();
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
menuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e);
}
});
menuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e);
}
});
this.getContentPane().add(menuBar, BorderLayout.NORTH);
this.getContentPane().add(pane, BorderLayout.CENTER);
pane.add(pane1);
pane.add(pane2);
pane1.setVisible(true);
pane2.setVisible(false);
menuBar.add(menu1, null);
menuBar.add(menu2, null);
menuBar.add(menu3, null);
menu1.add(menuItem1);
menu1.add(menuItem2);
pane1.add(new JLabel("Pane1"), null);
pane2.add(new JLabel("pane2"), null);
this.setSize(300,200);
this.setVisible(true);
} public static void main(String[] args) {
new Test();
} void menuItem1_actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("pane1")){
pane1.setVisible(true);
pane2.setVisible(false);
pane.invalidate();
pane.validate();
}
if(e.getActionCommand().equals("pane2")){
pane2.setVisible(true);
pane1.setVisible(false);
pane.invalidate();
pane.validate();
}
}
}
不错