【问题标题】:Java JTable head not showingJava JTable头没有显示
【发布时间】:2012-10-28 09:39:03
【问题描述】:

当我点击一个按钮时,我想在面板中显示一个表格。我可以让表格显示,但我无法显示标题。也尝试过使用 JscrollPane,但这里没有任何显示。

代码主要部分:

公共类 GUI 扩展 JFrame { JButton按钮; 静态 JFrame 框架; JTable表A; JPanel 表面板;

public static void main(String[] args) {
    frame = new GUI();

}

public GUI() {
    frame = new JFrame();
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

    JPanel MainPanel = new JPanel();
    MainPanel.setBackground(new Color(0, 0, 0));
    MainPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null,
            null, null, null));
    MainPanel.setBounds(0, 0, screen.width, screen.height - 60);
    MainPanel.setPreferredSize(screen);
    frame.getContentPane().add(MainPanel);
    MainPanel.setLayout(null);

    button = new JButton("Show Assignments");
    button.setFont(new Font("Tahoma", Font.PLAIN, 10));
    button.setBounds(MainPanel.getWidth() / 2 - 65, 40, 130, 20);
    MainPanel.add(button);

    TablePanel = new JPanel();
    TablePanel.setBackground(new Color(245, 222, 179));
    TablePanel
            .setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
    TablePanel.setBounds(160, 85, MainPanel.getWidth() - 170,
            MainPanel.getHeight() - 95);
    MainPanel.add(TablePanel);
    TablePanel.setLayout(null);

    button.addActionListener(new MyActionListener());

    frame.setExtendedState(frame.MAXIMIZED_BOTH);
    frame.setVisible(true);

}

单击按钮时会发生什么。

 class MyActionListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String[] columnNames = { "AssignmentID", "Assignmenttype",
                    " AssignmentDesricption", "ClientID", "Status" };
            Object[][] data = {
                    {
                            "028079",
                            "Software Support",
                            "Danzafe is in need software support on their mail program.",
                            "25890", "Waiting" },
                    {
                            "028080",
                            "Software Installing",
                            "Danzafe is in need of installation of new software on thier server.",
                            "25890", "In Progress" },
                    { "028081", "Hardware Setup",
                            "Expert Beslag needs to get a new local server setup.",
                            "25891", "In Progress" },
                    {
                            "028082",
                            "Hardware Support",
                            "Expert Beslag have a computer that is making troubles with the wireless internet card",
                            "25891", "Waiting" },
                    {
                            "028083",
                            "Balacing Question",
                            "Blizzard needs help balacing out the class of World of Warcraft",
                            "00001", "Never Ends" } };

            tableA = new JTable(data, columnNames);
            tableA.setBounds(5, 35, TablePanel.getWidth() - 15,
                    TablePanel.getHeight() - 15);

            TablePanel.add(tableA.getTableHeader());
            tableA.setFillsViewportHeight(true);
            tableA.setVisible(true);
            TablePanel.add(tableA);
            TablePanel.repaint();
        }
    }
}

【问题讨论】:

  • 请学习java命名约定并遵守它们。

标签: java swing jtable absolutelayout jtableheader


【解决方案1】:
  • 必须将JTable 放入JScrollPane,然后JTableHeader 应该可见

  • 或将Layout ManagerJPanel 从默认的FlowLayout 更改为BorderLayout

  • JTable获取JTableHeader并放到NORTH区域

  • 正确的方法是只使用JScrollPane

  • 不要使用setBounds(),使用内置的BorderLayout 代替JFrame 并输入JScrollPane(只是也许没有理由使用JPanel,只有在你' ll来计划使用CardLayout)到CENTER area

  • JComponent(s) 的其余部分放到单独的 JPanel 中,这个 JPanel 放到 NOTHRSOUTH 区域来自 JFrame

【讨论】:

  • 感谢您的帮助,遗憾的是无论我做什么,它仍然无法正常工作,所以我想问一下我是否可以在代码中提供一个示例。
  • 选择一个example
【解决方案2】:

您必须将表格放入滚动窗格,然后将滚动窗格添加到标签中。它应该以这种方式工作,您可能不需要做更多的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多