【问题标题】:Table header isn't shown in the table表头未显示在表中
【发布时间】:2019-12-27 10:04:46
【问题描述】:

我想做一个计分板。我正在使用表格来显示数据。数据会显示,但表头不会显示。我已经检查了其他文章,我也把JScrollPane.

import javax.swing.*;

public class Table {

    JFrame car;

    Table() {
        car = new JFrame();

        car.setTitle("Career");
        car.setSize(500, 500);
        car.setVisible(true);
        car.setLayout(null);

        String[] column = {"No.", "User Name", "Total Score"};
        String row[][] = {{"101", "Amit", "670000"},
        {"102", "Jai", "780000"},
        {"101", "Sachin", "700000"}};

        JTable jt = new JTable(row, column);
        jt.setBounds(20, 100, 225, 200);
        jt.setRowHeight(25);
        JScrollPane sp = new JScrollPane(jt);
        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        car.add(sp);
        car.add(jt);
    }

    public static void main(String[] args) {
        new Table();
    }
}

从其他网站,我在这里没有看到任何缺失的代码。 有什么问题?

【问题讨论】:

  • 1) 删除此声明:car.add(jt);。该表在滚动窗格中,并且滚动窗格已添加到 GUI 2) 同时删除 car.setLayout(null);jt.setBounds(20,100,225,200);null 布局会搞砸很多事情,包括滚动窗格的工作方式。
  • 谢谢!表格现在显示。但是该表已涵盖整个 Jframe。我希望它处于特定的位置和大小。
  • 1) “谢谢!现在显示表格。”不客气。请accept the answer(下)如果它有助于解决表格不出现的问题。 2) “然而..” 在您的下一个 问题中,提供 ASCII 艺术或以最小尺寸绘制的预期 GUI 布局的简单图,如果可调整大小,则具有更多的宽度和高度 - 以显示应如何使用额外空间。

标签: java swing jtable layout-manager jscrollpane


【解决方案1】:
  1. 删除此声明:car.add(jt);。表格在滚动窗格中,滚动窗格已添加到 GUI 中
  2. 同时删除car.setLayout(null); & jt.setBounds(20,100,225,200);。空布局会搞砸很多事情,包括滚动窗格的工作方式。
  3. 添加完所有组件后调用setVisible,调用pack()
  4. 需要进一步更改,BNI。

结果

import javax.swing.*;

public class Table {

    JFrame car;

    Table() {
        car = new JFrame();

        car.setTitle("Career");
        // this is just a guess. Add components then pack()
        //car.setSize(500, 500);
        //car.setLayout(null);

        String[] column = {"No.", "User Name", "Total Score"};
        String row[][] = {{"101", "Amit", "670000"},
        {"102", "Jai", "780000"},
        {"101", "Sachin", "700000"}};

        JTable jt = new JTable(row, column);
        //jt.setBounds(20, 100, 225, 200);
        jt.setRowHeight(25);
        JScrollPane sp = new JScrollPane(jt);
        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        car.add(sp);
        //car.add(jt);
        car.pack();
        // this statement should be last, immediately after pack()
        car.setVisible(true);
    }

    public static void main(String[] args) {
        new Table();
    }
}

【讨论】:

    【解决方案2】:

    我找到了我想要的另一种方式。

    import javax.swing.*;
    
    public class Table {
    
        JFrame car;
    
        Table() {
            car = new JFrame();
            car.setTitle("Career");
            car.setSize(500, 500);
            car.setVisible(true);
            car.setLayout(null);
    
            String[] column = {"No.", "User Name", "Total Score"};
            String row[][] = {{"101", "Amit", "670000"},
            {"102", "Jai", "780000"},
            {"101", "Sachin", "700000"}};
    
            JTable jt = new JTable(row, column);
            jt.setRowHeight(25);
            JScrollPane sp = new JScrollPane(jt);
            sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            sp.setBounds(20,100,225,200);
            car.add(sp);
        }
    
        public static void main(String[] args) {
            new Table();
        }
    }
    

    【讨论】:

    • (1-) 不要使用空布局。 Swing 旨在与布局管理器一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2021-12-23
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多