我在MainFrame中利用卡片布局切换需要显示的JPanel也就是后面的ManageBuilding这个类
在ManageBuilding里面我需要新建很多button但是每次切换到相应的ManageBuilding对应的卡片时
就只有将固定的那些Button没有循环创建的那些,鼠标划过的时候就又能看见这些button了
而且再次切换到这张卡片又是一片白板又得用鼠标划过才能显示...
急求解决方案啊...public class MainFrame extends JFrame{
ManageBuilding jp2 = new ManageBuilding("A", 13, 10);
JPanel jp1 = new JPanel();
JMenuBar mb = new JMenuBar();
CardLayout cl = null;
MainFrame(){
this.setResizable(false);
cl = new CardLayout();
final Container c = getContentPane();
c.setLayout(cl);
c.add(jp2, "2");
setJMenuBar(mb);
JMenu jm = new JMenu("选择操作");
mb.add(jm); JMenuItem jmi2 = new JMenuItem("管理楼栋信息");
jmi2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
cl.show(c, "2");
}
});
jm.add(jmi2);
}
private void _setVisible(boolean b){
this.setVisible(b);
}
public static void main(String[] args) {
MainFrame mf =new MainFrame();
mf.setTitle("小区物业管理系统");
mf.setSize(800, 600);
mf.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
------------------------------------------------------------------------------------------
public class ManageBuilding extends JPanel{
public ManageBuilding(String bid, int f, int num) {
initComponents(bid, f, num);
}
private void initComponents(String bid, int f, int num) {
for(int i = 0; i < num; i++ ){
String floor = "";
for(int j = 0; j < f; j++){
if(j < 9){
floor ="0"+(j+1);
}else{
floor =""+(j+1);
}
String name = bid +floor+0+(i+1);
jbs[i*num + j] = new JButton(name);
add(jbs[i*num + j]);
jbs[i*num + j].setBounds(i*70, 500-j*23, 70, 23);
}
jbs[i*num + f] = new JButton("style");
add(jbs[i*num + f]);
jbs[i*num + f].setBounds(i*70, 500-(f+1)*23, 70, 23);
}
}
private JButton[] jbs = new JButton[500];
private JButton jb = new JButton();
}
在ManageBuilding里面我需要新建很多button但是每次切换到相应的ManageBuilding对应的卡片时
就只有将固定的那些Button没有循环创建的那些,鼠标划过的时候就又能看见这些button了
而且再次切换到这张卡片又是一片白板又得用鼠标划过才能显示...
急求解决方案啊...public class MainFrame extends JFrame{
ManageBuilding jp2 = new ManageBuilding("A", 13, 10);
JPanel jp1 = new JPanel();
JMenuBar mb = new JMenuBar();
CardLayout cl = null;
MainFrame(){
this.setResizable(false);
cl = new CardLayout();
final Container c = getContentPane();
c.setLayout(cl);
c.add(jp2, "2");
setJMenuBar(mb);
JMenu jm = new JMenu("选择操作");
mb.add(jm); JMenuItem jmi2 = new JMenuItem("管理楼栋信息");
jmi2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
cl.show(c, "2");
}
});
jm.add(jmi2);
}
private void _setVisible(boolean b){
this.setVisible(b);
}
public static void main(String[] args) {
MainFrame mf =new MainFrame();
mf.setTitle("小区物业管理系统");
mf.setSize(800, 600);
mf.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
------------------------------------------------------------------------------------------
public class ManageBuilding extends JPanel{
public ManageBuilding(String bid, int f, int num) {
initComponents(bid, f, num);
}
private void initComponents(String bid, int f, int num) {
for(int i = 0; i < num; i++ ){
String floor = "";
for(int j = 0; j < f; j++){
if(j < 9){
floor ="0"+(j+1);
}else{
floor =""+(j+1);
}
String name = bid +floor+0+(i+1);
jbs[i*num + j] = new JButton(name);
add(jbs[i*num + j]);
jbs[i*num + j].setBounds(i*70, 500-j*23, 70, 23);
}
jbs[i*num + f] = new JButton("style");
add(jbs[i*num + f]);
jbs[i*num + f].setBounds(i*70, 500-(f+1)*23, 70, 23);
}
}
private JButton[] jbs = new JButton[500];
private JButton jb = new JButton();
}
解决方案 »
- Java 发 1000 或 3000 封 email 的解决方案
- 异常Exception in thread "main" java.lang.NullPointerException 怎么解决。
- 怎么样才能写一个日志properites 能把日志写到两个不同的文件里去(急)
- 新手用哪种GUI工具好啊?谢谢
- 请教:用Java函数如何实现文本图片的操作?
- 我的JAVA群,16918020,也可以谈谈.net,不过水平比较凹.
- -----简单正则表达式的问题----
- Java2十大经典中文图书
- 各位大虾求救:问一个MouseEvent的问题
- 有什么东西是用java做的?
- 请问如何写能排出下边效果的 compare( Object o1, Object o2 )
- 控制多线程顺序
急求高人解决啊!!
在actionPerformed(ActionEvent e) {
.....//具体的业务逻辑 MainFrame.validate();//如果是JComponent,最好使用revalidate()代替validate();
MainFrame.repaint();
}
不过还是感谢你,确实要用validate();