神龙剑士 2023-03-09 10:00 采纳率: 85.7%
浏览 20
已结题

java面板切换覆盖问题



import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;
import java.net.URL;
import java.awt.Graphics;


import java.io.*;
import javax.imageio.*;


//商店类
public class w18{
    
        JFrame j=new JFrame();
        Container c=j.getContentPane();
    
    
    public w18(){
        
        //面板布局
        j.setLayout(null);

        //面板按钮
        
        Icon kj1=new ImageIcon("sd3.png");
        Icon kj2=new ImageIcon("kj.png");
        JPanel j1=new JPanel();
        JButton w1=new JButton(" 装  备 ");
        JButton w2=new JButton(" 药  剂 ");
        JButton w3=new JButton(" 材  料 ");
        JButton w4=new JButton(" 道  具 ");
        j1.setLayout(new GridLayout(1,4,0,0));
        j1.setBounds(0,0,285,30);
        j1.add(w1);
        j1.add(w2);
        j1.add(w3);
        j1.add(w4);
        j.add(j1);
        
        
        //面板1

        JButton a1[]=new JButton[40];
        JPanel j11=new JPanel();
        
        j11.setPreferredSize(new Dimension(265,700));
        j11.setLayout(new GridLayout(20,2,1,1));    {for(int i=0;i<40;i++){
            a1[i]=new JButton(kj2);
            j11.add(a1[i]);
        
        }}
        
        JScrollPane s1=new JScrollPane(j11);
        s1.setBounds(0,30,285,410);
        //左右
        //s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//左右
        //上下
        s1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//上下
        j.add(s1);
        
        
        
        //面板2
        
        JButton a2[]=new JButton[40];
        JPanel j12=new JPanel();
        
        j12.setPreferredSize(new Dimension(265,700));
        j12.setLayout(new GridLayout(20,2,1,1));    {for(int i=0;i<40;i++){
            a2[i]=new JButton(kj1);
            j12.add(a2[i]);
        
        }}
        
        JScrollPane s2=new JScrollPane(j12);
        s2.setBounds(0,30,285,410);
        //左右
        //s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//左右
        //上下
        s2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//上下
        
        

        //面板3
        
        JButton a3[]=new JButton[40];
        JPanel j13=new JPanel();
    
        j13.setPreferredSize(new Dimension(265,700));
        j13.setLayout(new GridLayout(20,2,1,1));    {for(int i=0;i<40;i++){
            a3[i]=new JButton(kj2);
            j13.add(a3[i]);
        
        }}
        
        JScrollPane s3=new JScrollPane(j13);
        s3.setBounds(0,30,285,410);
        //左右
        //s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//左右
        //上下
        s3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//上下
        
        
        

        //面板4
        
        JButton a4[]=new JButton[40];
        JPanel j14=new JPanel();
        
        j14.setPreferredSize(new Dimension(265,700));
        j14.setLayout(new GridLayout(20,2,1,1));    {for(int i=0;i<40;i++){
            a4[i]=new JButton(kj1);
            j14.add(a4[i]);
        
        }}
        
        JScrollPane s4=new JScrollPane(j14);
        s4.setBounds(0,30,285,410);
        //左右
        //s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//左右
        //上下
        s4.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//上下
        
        
        
        

        
            //列  行
        
        
    
        j.setVisible(true);
        j.setSize(300,475);
        j.setLocationRelativeTo(null);//窗体居中
        j.setDefaultCloseOperation(2);//窗体关闭方式
        j.setResizable(false);//用户禁止拉伸窗体
        
        
        
        //面板按钮的动作事件
        
            w1.addActionListener(new ActionListener() {
                
             public void actionPerformed(ActionEvent e) {
                 j.add(s1);      
                 s1.revalidate();
            
             }
         });
         
             w2.addActionListener(new ActionListener() {
                
                
             public void actionPerformed(ActionEvent e) {
                     j.add(s2);
                 s2.revalidate();
             
            }
            
        
             
         });
         
             w3.addActionListener(new ActionListener() {
    
             public void actionPerformed(ActionEvent e) {
                    
                  j.add(s3);
                 s3.revalidate();
                
        
            }
            
        
             
         });
         
             w4.addActionListener(new ActionListener() {
                
                
             public void actionPerformed(ActionEvent e) {
                
                 j.add(s4);
                 s4.revalidate();
                
            }
            
        
             
         });
    
        
    }
public static void main(String[]args){
        new w18();
    }//主方法

}


     如上代码,实现点击按钮切换面板,但是我每个按钮第一次点击切换没问题,后面点击就没反应了,而且鼠标放在面板上会有覆盖效果,求指教
  • 写回答

3条回答 默认 最新

  • 神龙剑士 2023-03-19 18:03
    关注

    用卡片布局就OK了,CardLayout

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持