如何访问java核心包中的包可访问成员

本文介绍如何通过创建与目标类相同包名的辅助类来访问Java核心包中BorderLayout类的包可访问成员。通过具体示例展示了访问BorderLayout类center变量的方法。

        本文介绍如何访问java核心包中的包可访问成员。包可访问性的成员和方法指的是在声明成员或方法时没有加public、protected和private等访问修饰词的成员和方法。包可访问性的成员可以被同一个包中的其他类所访问。本文以BorderLayout中的center变量为例,简单介绍如何访问java核心包中的包可访问成员。

      1、为了访问BorderLayout中的center变量,我们编写一个AwtHelper类,将其包声明为java.awt,即和BorderLayout所在的包同名。代码如下

package java.awt;

import javax.swing.JButton;
import javax.swing.JFrame;

public class AwtHelper {

    
public static Component getChild(BorderLayout layout,String key){
        Component result 
= null;
        
if(key == BorderLayout.NORTH)
            result 
= layout.north;
        
else if(key == BorderLayout.SOUTH)
            result 
= layout.south;
        
else if(key == BorderLayout.EAST)
            result 
= layout.east;
        
else if(key == BorderLayout.WEST)
            result 
= layout.west;
        
else if(key == BorderLayout.CENTER)
            result 
= layout.center;
        
return result;
    }

    
    
public static void main(String[] args) {
        Container container 
= createTestContainer();
        
if( container.getLayout() instanceof BorderLayout){
            BorderLayout layout 
= (BorderLayout)container.getLayout();
            Component center 
= AwtHelper.getChild(layout, BorderLayout.CENTER);
            System.out.println(
"Center Component = " + center);
        }

    }

    
    
public static Container createTestContainer(){
        JFrame frame 
= new JFrame();
        Container con 
= frame.getContentPane();
        con.setLayout(
new BorderLayout());
        con.add(
new JButton("Center"),BorderLayout.CENTER);
        
return con;
    }

}

   2、将AwtHelper.java 编译后,将该类加入启动类路径 运行命令 java -Xbootclasspath/p:. java.awt.AwtHelper

Center Component = javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignment
Y
=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@1adc30,f
lags
=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,dis
abledSelectedIcon
=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom
=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,
rolloverIcon
=,rolloverSelectedIcon=,selectedIcon=,text=Center,defaultCapable=tru
e]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值