首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTable/JScroll隐藏行和JTable

JTable/JScroll隐藏行和JTable
EN

Stack Overflow用户
提问于 2013-10-21 17:37:55
回答 1查看 255关注 0票数 0

你好,我是一个非常新的JAVA和断电图形用户界面,而我学习。我创建了一个带有ScrollPane和JTable的JTable。当我将列增加到2以上时,第一行下面的数据就不会显示出来。

另外,当我的JFram出现时,屏幕是空白的,直到我调整窗口的大小。

代码语言:javascript
复制
import javax.swing.*;
import javax.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.Border;
import javax.swing.JTable;
import javax.swing.JScrollPane;


public class Swing {

public static void main (String[] args){
//ADD FRAME 
    Color LBlue = new Color(83,141,213);//RGB Light BLUE

    JFrame frame = new JFrame("COLA");
    frame.setSize(950,350);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //CLOSE
    frame.getContentPane().setBackground(LBlue); //COLOR
    frame.setLocationRelativeTo(null); //Center JFrame in the middle of screen

//MENU Work
    JMenuBar menubar = new JMenuBar();
    frame.setJMenuBar(menubar);
    JMenu file = new JMenu ("File");
    menubar.add(file);
    JMenuItem exit = new JMenuItem("Exit");
    file.add(exit);

    class exitaction implements ActionListener{ //Action to call menu bar to close
        public void actionPerformed (ActionEvent o){
            System.exit(0);
        }
    }
    exit.addActionListener(new exitaction());
//GRID WORK

    JPanel panel = new JPanel(new GridBagLayout());
    frame.getContentPane().add(panel, BorderLayout.NORTH);
    GridBagConstraints c = new GridBagConstraints();
    panel.setBackground(LBlue); //Set Background of Panel
    panel.setVisible(true);


    String data[][] = {{"HEADER 1", "ABC"}, {"HEADER 1", "HEADER 1"}, {"HEADER     1", "GHI" },     {"HEADER 1", "GHI" }};
    String col[] = {"", "NAMES", "NAMES", };
    JTable table = new JTable(data, col);
    table.setBackground(Color.GRAY);
    table.setFont(new Font("Arial", Font.BOLD, 12));
    table.setVisible(true);

    JScrollPane scroll =new JScrollPane(table);
    c.gridx = 1; 
    c.gridy = 1;    
    scroll.setPreferredSize(new Dimension( 900,115));
    panel.add(scroll);

    table.revalidate();
    table.validate();
    table.repaint();
    table.setVisible(true);

    scroll.invalidate();
    scroll.validate();
    scroll.repaint();
    table.setVisible(true);

    frame.setVisible(true);

}

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 17:49:07

您的代码生成堆栈跟踪。

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
    at javax.swing.JTable$1.getValueAt(JTable.java:689)
    at javax.swing.JTable.getValueAt(JTable.java:2720)

这是问题的一个很好的指示。这意味着数据列的数量需要与列标识符的数量相匹配。添加丢失的数据:

代码语言:javascript
复制
String data[][] = { 
    { "NEWDATA", "HEADER 1", "ABC" }, { "NEWDATA", "HEADER 1", "HEADER 1" },
    { "NEWDATA", "HEADER     1", "GHI" }, { "NEWDATA", "HEADER 1", "GHI" }, 
};

读:如何使用表

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

https://stackoverflow.com/questions/19501131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档