java panel函数_Java中的JPanel的函数setBounds()的用法误解

这篇博客讨论了在Java Swing中遇到的问题,即当一个JPanel被设置为1024*512大小,并添加了两个子面板CoraseButtonPanel和Joint1ButtonPanel后,Joint1ButtonPanel的按钮不显示。原因是按钮的setBounds坐标超过了其父面板的边界。解决方案是调整按钮的坐标使其在Joint1ButtonPanel的区域内。博客内容涉及Swing布局管理、组件定位和事件监听。

建立一个JPanel,1024*512后,把下面的CoraseButtonPanel和Joint1ButtonPanel添加进去,然后运行,发现Joint1ButtonPanel里的按钮不显示,调试发现setBounds的大小是相对于自己的Panel而言的,把Joint1ButtonPanel里的按钮的setBounds横坐标换成512以内的数就可以了。

class CoraseButtonPanel extends JPanel{      public CoraseButtonPanel(){          this.setLayout(null);          this.setBounds(0,0,512,512);          this.setBorder( BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,1),          "Coarse Adjustment",TitledBorder.DEFAULT_POSITION,TitledBorder.TOP,new java.awt.Font("Times New Roman",0,20)));         CoraseStartButton=new JButton("Start");          CoraseStartButton.setSize(80,30);         CoraseStartButton.setBounds(180,460,80,30);         CorasePreceedButton = new JButton("Preceed");         CorasePreceedButton.setSize(100,30);         CorasePreceedButton.setBounds(280,460,100,30);         CoraseCancleButton = new JButton("Cancle");         CoraseCancleButton .setSize(80,30);         CoraseCancleButton.setBounds(400,460,80,30);         CorasePreceedButton.setEnabled(false);         CoraseCancleButton.setEnabled(false);          CoraseStartButton.addActionListener(new CoraseStartAction());          CorasePreceedButton.addActionListener(new CorasepreceedAction());          CoraseCancleButton.addActionListener(new CorasecancleAction());        add(CoraseStartButton);        add(CorasePreceedButton);        add(CoraseCancleButton);      }    }   class Joint1ButtonPanel extends JPanel{     public Joint1ButtonPanel(){           this.setLayout(null);         this.setBounds(512,0,512,512);        this.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,1),       "Joint1 Adjustment",TitledBorder.DEFAULT_POSITION,TitledBorder.TOP,new java.awt.Font("Times New Roman",0,20)));        Joint1BackButton=new JButton("Back");        Joint1BackButton.setSize(80,30);        Joint1BackButton.setBounds(700,460,80,30);        Joint1PreceedButton = new JButton("Preceed");        Joint1PreceedButton.setSize(100,30);         Joint1PreceedButton.setBounds(800,460,100,30);       Joint1CancleButton = new JButton("Cancle");       Joint1CancleButton.setSize(80,30);       Joint1CancleButton.setBounds(900,460,80,30);       Joint1BackButton.setEnabled(false);       Joint1PreceedButton.setEnabled(false);       Joint1CancleButton .setEnabled(false);      Joint1BackButton.addActionListener(new Joint1BackAction());      Joint1PreceedButton.addActionListener(new Joint1PreceedAction());      Joint1CancleButton.addActionListener(new Joint1CancleAction());      add(Joint1BackButton);           add(Joint1PreceedButton);       add(Joint1CancleButton);     }   }

JPanel panel_1 = new JPanel(); panel_1.setBounds(178, 88, 674, 606); contentPane.add(panel_1); panel_1.setLayout(new CardLayout(0, 0)); JPanel panel_2 = new JPanel(); panel_2.setBackground(new Color(192, 192, 192)); panel_1.add(panel_2, "name_275636921543799"); panel_2.setLayout(null); panel_2.setVisible(true); JButton btnNewButton_4 = new JButton("刷新"); btnNewButton_4.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4.setBounds(382, 549, 97, 43); panel_2.add(btnNewButton_4); JButton btnNewButton_4_1 = new JButton("退出"); btnNewButton_4_1.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_1.setBounds(555, 549, 97, 43); panel_2.add(btnNewButton_4_1); table = new JTable(); table.setBounds(10, 128, 654, 397); panel_2.add(table); JLabel lblNewLabel_1 = new JLabel("房间信息查询"); lblNewLabel_1.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1.setBounds(262, 34, 203, 43); panel_2.add(lblNewLabel_1); JPanel panel_3 = new JPanel(); panel_1.add(panel_3, "name_275668537789200"); panel_3.setLayout(null); JLabel lblNewLabel_1_1 = new JLabel("入住退订办理"); lblNewLabel_1_1.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1_1.setBounds(259, 28, 203, 43); table_1 = new JTable(); table_1.setBounds(10, 109, 654, 397); panel_3.add(table_1); JLabel lblNewLabel_1_2 = new JLabel("入住退订办理"); lblNewLabel_1_2.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1_2.setBounds(268, 30, 203, 43); panel_3.add(lblNewLabel_1_2); JButton btnNewButton_4_2 = new JButton("确定"); btnNewButton_4_2.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2.setBounds(385, 534, 97, 43); panel_3.add(btnNewButton_4_2); JButton btnNewButton_4_2_1 = new JButton("退出"); btnNewButton_4_2_1.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_1.setBounds(550, 534, 97, 43); panel_3.add(btnNewButton_4_2_1); JPanel panel_4 = new JPanel(); panel_1.add(panel_4, "name_275807633695300"); panel_4.setLayout(null); JLabel lblNewLabel_1_2_1 = new JLabel("添加客房信息"); lblNewLabel_1_2_1.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1_2_1.setBounds(254, 34, 203, 43); panel_4.add(lblNewLabel_1_2_1); table_2 = new JTable(); table_2.setBounds(10, 113, 654, 397); panel_4.add(table_2); JButton btnNewButton_4_2_2 = new JButton("确定添加"); btnNewButton_4_2_2.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_2.setBounds(509, 533, 143, 50); panel_4.add(btnNewButton_4_2_2); JButton btnNewButton_4_2_2_1 = new JButton("修改"); btnNewButton_4_2_2_1.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_2_1.setBounds(343, 533, 143, 50); panel_4.add(btnNewButton_4_2_2_1); JPanel panel_5 = new JPanel(); panel_1.add(panel_5, "name_275826768183699"); panel_5.setLayout(null); JLabel lblNewLabel_1_2_1_1 = new JLabel("查看客房信息"); lblNewLabel_1_2_1_1.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1_2_1_1.setBounds(252, 32, 203, 43); panel_5.add(lblNewLabel_1_2_1_1); table_3 = new JTable(); table_3.setBounds(10, 121, 654, 397); panel_5.add(table_3); JPanel panel_6 = new JPanel(); panel_1.add(panel_6, "name_275833938523600"); panel_6.setLayout(null); JLabel lblNewLabel_1_2_1_1_1 = new JLabel("账户管理"); lblNewLabel_1_2_1_1_1.setFont(new Font("微软雅黑", Font.BOLD, 20)); lblNewLabel_1_2_1_1_1.setBounds(275, 34, 203, 43); panel_6.add(lblNewLabel_1_2_1_1_1); table_4 = new JTable(); table_4.setBounds(10, 87, 654, 397); panel_6.add(table_4); JButton btnNewButton_4_2_2_1_1 = new JButton("添加账户"); btnNewButton_4_2_2_1_1.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_2_1_1.setBounds(93, 522, 143, 50); panel_6.add(btnNewButton_4_2_2_1_1); JButton btnNewButton_4_2_2_1_1_1 = new JButton("修改密码"); btnNewButton_4_2_2_1_1_1.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_2_1_1_1.setBounds(295, 522, 143, 50); panel_6.add(btnNewButton_4_2_2_1_1_1); JButton btnNewButton_4_2_2_1_1_2 = new JButton("确定"); btnNewButton_4_2_2_1_1_2.setFont(new Font("微软雅黑", Font.BOLD, 16)); btnNewButton_4_2_2_1_1_2.setBounds(505, 522, 143, 50); panel_6.add(btnNewButton_4_2_2_1_1_2); JMenuBar menuBar = new JMenuBar(); menuBar.setBounds(0, 0, 71, 23); contentPane.add(menuBar); JMenu mnNewMenu = new JMenu("菜单"); mnNewMenu.setFont(new Font("微软雅黑", Font.BOLD, 19)); menuBar.add(mnNewMenu); JMenuItem mntmNewMenuItem = new JMenuItem("保存"); mnNewMenu.add(mntmNewMenuItem); JMenuItem mntmNewMenuItem_1 = new JMenuItem("退出系统"); mnNewMenu.add(mntmNewMenuItem_1); 怎么将这些面板添加进容器
最新发布
06-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值