繁体   English   中英

显示JList

[英]Displaying JList

再次我在从mysql数据库显示数据时遇到JList问题,我使用下面给出的代码,但它没有在屏幕上显示任何内容。

JFrame f8 = new JFrame("Schedule");
f8.setVisible(true);
f8.setSize(1000, 1000);
JPanel jpa1 = new JPanel(new GridBagLayout());

String query = "SELECT * FROM Location";
DefaultListModel model = new DefaultListModel();
DefaultListModel model1 = new DefaultListModel();
try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Statement stmt = null;
    ResultSet rs;
    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/SPL", "root", "PWD");
    stmt = (Statement) conn.createStatement();
    rs = stmt.executeQuery(query);
    while (rs.next()) {
        String stadium = rs.getString("Stadium");
        String city = rs.getString("City");
        model.addElement(stadium);
        model1.addElement(city);
    }
    JList list = new JList(model);
    JList list1 = new JList(model1);
    f8.add(jpa1);
    jpa1.add(list);
    list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
    list.setVisibleRowCount(1);
    JScrollPane listScroller = new JScrollPane(list);
} catch (SQLException e) {
    System.out.println("Message   : " + e.getMessage());
}

你能告诉我,我在哪里错了吗?

很难说基于代码片段的问题是什么,更不用说一些难以阅读的无格式代码了,但......

  • 您将一个列表添加到JPanel,但随后将相同的列表添加到JScrollPane并忽略JScrollPane。
  • 你使用的GridBagLayout没有任何GridBagConstraints
  • 你在Swing事件线程上做了很多JDBC代码,这可能会锁定这个线程。
  • 您创建一个JList,list1,但不要将其添加到任何内容。

你应该考虑:

  • 在GUI之外测试数据库代码。 划分问题来征服它,否则你会有太多的变量会影响你的结果,因此很难知道是什么导致了什么。
  • 将调试语句放在代码中或使用调试器首先找出错误的位置。
  • 在要求志愿者提供帮助时,只发布格式良好的代码。 要理解别人的代码是很难的,你应该努力不要让它变得更难。 我们非常感谢您的努力!

气垫船的鳗鱼几乎击中了头上的钉子,但我原谅了他的原因,直到我开始拍摄你的整个部分代码我没有看到它。

代码的最后一行是

JScrollPane listScroller = new JScrollPane(list);

您永远不会将此滚动窗格添加到UI。 它具有从其前一个父级( jpa1 )中删除list并添加到滚动窗格的效果,这不会在屏幕上显示任何内容。

我会跟随所有的Hovercraft充满鳗鱼的建议,然后弄清楚如何解决这个最后的问题......

jpa1.add(new JScrollPane(list));

应该就是这么做的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM