java - 使用 vector jswing 获取正确的表格标题

标签 java swing vector derby

我有一个表,显示 netbeans 数据库中的所有信息。该表与滚动条和信息完美显示,但标题都是相同的。数据库表中的第五个元素。因此,表标题不是名称、类型、价格...它们都说 example2、example2...

我不明白为什么。我觉得如果 vector 概念能够填充所有信息,那么它也应该能够填充标题。

感谢您的帮助。

/*
 * FullDatabaseTable.java
 *
 * 
 */
package brainstormer95;

import java.awt.Color;
import java.awt.Dimension;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 *
 * @author ME
 */
public class FullDatabaseTable extends JPanel{
    Vector stringInfo;

    /** Creates new form FullDatabaseTable */
    public FullDatabaseTable() throws SQLException {

        //initComponents();
    }

    public void createTable() throws SQLException {
        Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/brainstormer", "name", "name");
        Statement stmt = con.createStatement();
        PreparedStatement psmt = con.prepareStatement(" SELECT ITEM_NAME,SPECIFIC_PURPOSE,EXAMPLE_1,EXAMPLE_2 FROM APP.INVENTORY");
        ResultSet rs = psmt.executeQuery();

        for (int i=1;i<=rs.getRow();i++){
        String tableTitle = (rs.getMetaData().getTableName(i));
        JLabel title = new JLabel(tableTitle);
        }

        int columnCount = rs.getMetaData().getColumnCount();
        Vector columns = new Vector(columnCount);

        for (int i = 1; i <= columnCount; i++) {
            columns.add(rs.getMetaData().getColumnName(columnCount));
        }

        Vector stringVector = new Vector();
        while (rs.next()) {
            stringInfo = new Vector(columnCount);
            for (int i = 1; i <= columnCount; i++) {
                stringInfo.add(rs.getString(i));
            }
            stringVector.add(stringInfo);
        }

        //Format
        JScrollPane tableScrollPane;
        Dimension tableSize = new Dimension();
        tableSize.setSize(1400,800);
        Dimension scrollSize = new Dimension();
        scrollSize.setSize(1000,600);
        JTable table = new JTable(stringVector,columns);
        table.setPreferredSize(tableSize);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        tableScrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        tableScrollPane.setPreferredSize(scrollSize);
        table.setShowGrid(true);
        table.setGridColor(Color.BLACK);
        table.setEnabled(false);
        JPanel jPanel = new JPanel();
        jPanel.add(tableScrollPane);
        add(jPanel);
        setVisible(true);
        setBackground(Color.white);

    }
     public JComponent returnGUI() {
        return this;

    }
}

最佳答案

这看起来不正确。您每次迭代都使用columnCount

   for (int i = 1; i <= columnCount; i++) {
        columns.add(rs.getMetaData().getColumnName(columnCount));
    }

你的意思可能是这样的:

   for (int i = 1; i <= columnCount; i++) {
        columns.add(rs.getMetaData().getColumnName(i));
    }

这可以解释为什么您看到错误的 header 名称。

关于java - 使用 vector jswing 获取正确的表格标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161984/

相关文章:

java - 如何在窗口上暂时阻止鼠标监听器?

java - 为什么调试时与从命令行运行时 Swing 应用程序窗口看起来不同?

java - 根据条件获取 vector 索引位置

java - 避免在不同上下文中多次实现同一方法

java - ArrayList 编译错误

java - 如何防止 Java Swing 中的工具栏按钮焦点?

c++ - 数组下标c++的无效类型 ‘int[unsigned int]’

c++ - 用另一个const std::vector和其他值创建一个const std::vector

java - 不存在类型变量 V 的实例,因此 ExpectedCondition<Boolean> 符合 Function<? super WebDriver,V>

Java 自定义类 w/Defaultlistmodel 添加的元素未保存