首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java JTable列标题不显示

Java JTable列标题不显示
EN

Stack Overflow用户
提问于 2012-12-18 15:13:18
回答 3查看 29.5K关注 0票数 4

我的代码(逻辑方面)都很好,唯一的问题是列标题没有显示在两个表中(table和tableS,一个用于教师,另一个用于学生详细信息)。我如何让它们显示出来?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;


public class Display
{
    ArrayList<Student> stud1 = new ArrayList<Student>();
    ArrayList<SubjectTeacher> sTeach1 = new ArrayList<SubjectTeacher>();

    //For Display Teachers
    private  JTable table;
    private  JFrame f;
    private int i;

    //For DisplayStudents
    private JTable tableS;
    private JFrame fS;
    private int iS;


    //Displays Teachers
    public void displayTeachers()
    {

            f = new JFrame("Teachers");

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(500,400);
            f.setVisible(true);



        String[] columnNames =  {"Name", "Surname", "ID", "Pay", "Subject"};

        sTeach1 = Stores.getTeach();
        i = sTeach1.size();


        Object[][] data = new Object[i+1][5];



            for (int j = 0; j<sTeach1.size(); j++)
            {
                {
                    SubjectTeacher myTeach = sTeach1.get(j);
                     data[j][0] = myTeach.getName();
                     data[j][1] = myTeach.getSurname();
                     data[j][2] = myTeach.getID();
                     data[j][3] = myTeach.getPay();
                     data[j][4] = myTeach.getSubjectID();
                };
            }




    JTable table = new JTable (data, columnNames);
    f.add(table);

    }



    //Displays Students
    public void displayStudents()
    {

        System.out.println(stud1.size());

            fS = new JFrame("Students");

            fS.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fS.setSize(700,600);
            fS.setVisible(true);



        String[] colNames =  {"Name", "Surname", "ID", "Computer", "Physics", "Maths", "Tests", "Passes", "Fails"};


        stud1 = Stores.getStud();
        iS = stud1.size();

        Object[][] info = new Object[iS+1][9];




        for (int j = 0; j<stud1.size(); j++)
            {
                {


                    Student myStud = stud1.get(j);

                 info[j][0] = myStud.getName();
                 info[j][1] = myStud.getSurname();
                 info[j][2] = myStud.getID();
                 info[j][3] = myStud.getSubject(1);
                 info[j][4] = myStud.getSubject(2);
                 info[j][5] = myStud.getSubject(3);
                 info[j][6] = myStud.getTestsTaken();
                 info[j][7] = myStud.getPasses();
                 info[j][8] = myStud.getFails();
                };
            }




    JTable tableS = new JTable (info, colNames);
    fS.add(tableS);

    }

}
EN

回答 3

Stack Overflow用户

发布于 2012-12-18 16:05:51

这是问题所在。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JTable table = new JTable (data, columnNames);
f.add(table);

不要直接添加表。使用JScrollPane显示表头。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f.add(new JScrollPane(table))

为什么需要将表放在JScrollPane

来自@Dan帖子:

当您将组件放在JScrollPane的构造函数中时,您提到了要应用滚动的视图。另一方面,使用add方法,您只需将组件添加到容器中,就像将其添加到JPanel中一样。这样,您就不必指定要向其中添加滚动条的组件。

编辑:来自javadoc(垃圾神在评论部分引用)

下面的

是创建滚动窗格作为表的容器的典型代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true); 

此代码段中的两行代码执行以下操作:使用引用表格对象的参数调用JScrollPane构造函数。这将创建一个滚动窗格作为表的容器;该表将自动添加到容器中。调用JTable.setFillsViewportHeight来设置fillsViewportHeight属性。当此属性为true时,即使表没有足够的行来使用整个垂直空间,表也会使用容器的整个高度。这样可以更容易地将表用作拖放目标。滚动窗格会自动将表格标题放置在视口的顶部。滚动表格数据时,列名称在查看区域的顶部保持可见。

如果您正在使用没有滚动窗格的表,则必须获取表头组件并自行放置它。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
container.setLayout(new BorderLayout());
container.add(table.getTableHeader(), BorderLayout.PAGE_START);
container.add(table, BorderLayout.CENTER);
票数 20
EN

Stack Overflow用户

发布于 2012-12-18 15:22:37

如果我没记错的话,你应该在它周围放一个容器(例如JScrollPane)。

票数 4
EN

Stack Overflow用户

发布于 2020-12-02 14:06:43

我的问题是我将我的JFrame布局设置为null (f.setLayout(null))。所以当我删除它并添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f.add(new JScrollPane(table)). 

啊,真灵。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13935934

复制
相关文章
asp.net中显示DataGrid控件列序号的几种方法
在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接得到序号,下面来看看怎样得到和显示序号值计算方式如下:
Java架构师必看
2021/03/22
1.6K0
PHP错误提示open_basedir restriction in effect的解决方案
前几天收到一个网友反馈,出现了一个错误提示“open_basedir restriction in effect. File(/opt/rasp_php70/logs/alarm/alarm.log.2022-01-01) is not within the allowed path(s)”,看过之后一头雾水,没遇到过,今天做zblog搜索伪静态的时候突然想起来这个错误了,是的,十天了,我才想起来,没办法啊记性不好。百度了一下,应该是宝塔“防跨站攻击(open_basedir)”引起的错误,一般来说是Apache环境引起的。
李洋博客
2022/01/18
8.6K0
PHP错误提示open_basedir restriction in effect的解决方案
随机日志:两列显示
  看到别人的随机日志都是现实两列,我这一直显示一列,一是因为显示一列不好看,二是提供的信息量太低。因此改成两列还是很有必要的,于是自己写了些css样式,添加到主题的style.css文件的最下面。
the5fire
2019/02/28
9690
点击显示错误
双折线点击一个,另一显示a b 错误.PNG 正确.PNG 隐藏一条线 tooltip: { // 气泡 trigger: "axis"
用户4344670
2019/08/28
1.2K0
点击显示错误
在Ubuntu中配置ASP.NET站点
mono是.NET在Linux等非Windows平台上的第三方实现,借助它就可以实现.NET的跨平台应用。虽然mono还不能支持所有的.NET应用,但对于普通的小型程序,mono已经足够胜任了。更让人鼓舞的是当前最为流行的桌面Linux系统Ubuntu已经集成了mono的运行环境,只要手上有一个.net应用程序,拷贝到Ubuntu中,然后就可以运行了。实际上,在Ubuntu中,已经有一些应用程序是用C#完成的,例如附件中的便签程序Tomboy就是用C#写的,打开Tomboy的文件目录,就会发现很多在Windows中常见的dll程序集,所以,跨平台也不是不可以的。
用户1685462
2021/07/28
1.7K0
Ext根据条件显示隐藏列
  写在ExtonReady函数里面,并在表格成功渲染之后,可以添加判断是否隐藏或者显示某一列
河岸飞流
2019/08/09
2.7K0
IIS发布站点错误收集
转载:http://www.cnblogs.com/hangwei/p/4249406.html
跟着阿笨一起玩NET
2018/09/20
1.6K0
IIS发布站点错误收集
FineUI Grid 缓存列显示隐藏状态
当列表字段过多时,需要隐藏掉一些,但是再次打开页面又显示出来了,FineUI没有提供缓存功能,那么自己动手,打开【ext-part2.js】找到
冰封一夏
2019/09/11
8150
「R」显示英文错误
中文使用 R 经常看到各种乱码文字,让人看不懂意思,特别是在 Windows 系统上。
王诗翔呀
2020/07/02
1.8K0
安装SSL检查提示“错误: 服务器缺少中间证书”
首先检测下证书是不是中间证书缺失,以下两个网站都可以检测。 https://www.ssllabs.com/ssltest/index.html https://www.myssl.cn/tools/
咻一咻
2020/05/29
4.2K0
调查显示编程语言 Ruby 在缓慢衰落,缺少爆发点
Ruby 虽然仍然是 Engine Yard 和 Heroku 等产品的核心,以及 Discourse、Homebrew 和 Vagrant 等项目背后的语言,但你知道吗?Ruby 的走势并不乐观。 Redmonk 近日针对 Ruby 的发展做了一些总结,在其最近的排名中,Ruby 位居第八,落后于 JavaScript、Python 和 PHP 等语言,但领先于 C、Swift 和 Go 。尽管排名不低,但第八名其实是 Ruby 在 redmonk 排名中排名最差的一次。自2012年以来,该语言的排名
企鹅号小编
2018/02/08
1.2K0
调查显示编程语言 Ruby 在缓慢衰落,缺少爆发点
出现“内部错误,无法显示”
This page contains the following errors: error on line 2 at column 6: XML declaration allowed only at the start of the document Below is a rendering of the page up to the first error. 提示信息是头部有错误,我登录后台查看我修改过的页面,然后找到home.php我看了十几分钟没有发现那里有错误~~ 莫非头部不能有空格? 去掉试试
苦咖啡
2018/05/07
3.2K0
linux python 中文显示错误
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 20-25: ordinal not in range(128)
py3study
2020/01/07
5.4K0
DataGridView 密码列(显示为*号)的设置
曾经为在DataGridView中设置密码列(显示为*号)而发愁,如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。
Java架构师必看
2021/03/22
2.3K0
gridview列 数字、货币和日期 显示格式
在设置gridview等数据绑定控件的模版列时,总要设置显示的格式,这里是我查询一些资料后统计出来的。
Java架构师必看
2021/03/22
1.3K0
如何设置Element表格显示或者隐藏列
Element 表格点击复选框显示或隐藏列,效果如下: 主要步骤: 一、渲染复选框 <el-checkbox-group v-model="checkboxVal"> <el-ch
tianyawhl
2020/10/14
6.1K0
Winforms Cefsharp应用通过Vs Installer安装,应用崩溃,缺少文件错误
          本文主要分析winforms cefsharp应用通过Vs Installer做成安装包后,安装程序后,启动程序导致应用崩溃,提示System.IO.FileNotFoundException
郑小超.
2022/12/21
9020
Element Table 动态生成列并且不同的列显示不同的样式
我们在使用表格控件时,经常需要动态生成表格的列,并且某些列要求特殊的样式(如右对齐)
tianyawhl
2020/02/25
5.3K0
在ASP.NET 2.0中建立站点导航层次
站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局。默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息。
Java架构师必看
2021/03/22
7.1K0
点击加载更多

相似问题

错误"open_basedir restriction in effect“

12

get_extra_restriction()缺少一个必需的位置参数:'related_alias‘错误django

210

NHIbernate: Restriction.In和Restriction.InG之间的区别

20

内部托管Nuget站点上缺少类型错误

13

Asp.net图多列显示错误数据

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文