ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

内部类和JTable

2022-06-12 21:03:24  阅读:97  来源: 互联网

标签:内部 int void public JTable new class


内部类

内部类可以分为四类:普通内部类、静态内部类、匿名内部类、局部内部类

普通内部类:

public class a {
    class Student{
        
    }
}

内部类可以直接访问外部类的成员,包括私有成员。

外部类要访问内部类的成员必须要建立内部类的对象

 

 局部内部类:定义在某个局部范围中的类,其有效范围只限于方法内部
public class a {
    int outer = 10;
    public void outer(){
        System.out.println("外部类");
    }
    public void aa(){
        class Inner{
            int inner = 120;
            public void inner(){
                System.out.println("内部类");
                System.out.println(outer);
                outer();
            }
        }
        //创建局部内部类对象
        Inner a = new Inner();
        System.out.println(a.inner);
        a.inner();
    }
}

public class aTest {
    public static void main(String[] args) {
        a a = new a();
        a.aa();
    }
}

 

 只需要创建外部类对象,调用所属方法即可访问局部内部类

静态内部类:使用static关键字修饰的成员内部类

public class a {
    static int outer = 10;
    static class Inner{
        int inner = 120;
        public void innerMethod(){
            System.out.println("内部类成员变量"+inner);
            System.out.println("外部类成员变量"+outer);
        }
    }
}
public class aTest {
    /*
    静态内部类
    外部类名.内部类名 对象名 = new 外部类名.内部类名();
     */
    public static void main(String[] args) {
        a.Inner inner = new a.Inner();
        inner.innerMethod();

    }
}

 

 

匿名内部类:

匿名内部类其实就是没有名称的内部类

一个接口的实现类作为方法参数传入,而是直接通过匿名内部类的形式传入一个接口类型参数,在匿名内部类中直接完成方法的实现

public interface Animal {
    public abstract void breach();
}
public class aTest {
    /*
    等号右边是匿名内部类,定义并创建该接口的子类对象
    等号左边是多态赋值,接口类型引用指向子类对象
     */
    public static void main(String[] args) {
       Animal a = new Animal(){

           @Override
           public void breach() {
               System.out.println("aaa");
           }
       };
       a.breach();
    }
}

 

JTable

JTable可以以表格的形式显示数据和编辑数据

JTable这个对象不能存储数据,他只管数据的表现

public class KCBData implements TableModel {
    private String[] title = {"周一","周二","周三","周四","周五","周六","周七"};

    private String[][] data = new String[8][7];

    public KCBData(){
        for (int i = 0; i <data.length; i++) {
            for (int j=0; j<data[i].length; j++) {
                data[i][j] = "";
            }
        }
    }

    @Override
    public int getRowCount() {
        return 8;
    }

    @Override
    public int getColumnCount() {
        return 7;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return title[columnIndex];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return String.class;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return true;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return data[rowIndex][columnIndex];
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        data[rowIndex][columnIndex] = (String)aValue;
    }

    @Override
    public void addTableModelListener(TableModelListener l) {

    }

    @Override
    public void removeTableModelListener(TableModelListener l) {

    }
}

public class KCB {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JTable table = new JTable(new KCBData());
        JScrollPane pane = new JScrollPane(table);
        frame.add(pane);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

 

搜索

复制

标签:内部,int,void,public,JTable,new,class
来源: https://www.cnblogs.com/pengtianyang/p/16368863.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有