苑大黑 ᕕ( ᐛ )ᕗ 2019-11-22 20:55 采纳率: 0%
浏览 1285

Java JButton事件监听,按下后,没有反应?

给JButton注册了事件监听器,但是按下后没有反应,下面是代码部分。代码无错误。


下面只有关于按钮部分的代码


我写了一个生成相关文件的图形界面,总代码较长,放到了后面,真心希望大佬可以给出解答!!!


是不是相关的逻辑层面出了错误呢?大佬给些相关方面的提示也可以,谢谢啦!


真的想了好久好久,始终不知道错误出在哪里。

按钮生成函数
public static JButton[] createButton (int x) {
        JButton[] jb = new JButton[x];

        //将生成的button放入JButton型数组
        for(int k = 0; k < x; k++) {
            JButton button = new JButton(getAllTableNames(ProjectConfig.DATABASE_NAME).get(k));
            Dimension preferredSize = new Dimension(280, (500-50)/(getAllTableNames(ProjectConfig.DATABASE_NAME).size()+1));
            button.setPreferredSize(preferredSize);
            jb[k] = button;
        }
        return jb;
    }

按钮注册事件监听,并且增加到界面的函数

        //添加button
        list = getAllTableNames(ProjectConfig.DATABASE_NAME);
        number = list.size();

        for ( int i = 0; i < number; i++){

            int j = i;

            //增添按钮
            gui.add(createButton(number)[j]);
            //实现按钮监听
            createButton(number)[j].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("hello");

                }
            });

            System.out.println("hello!!!!");
        }


这是总代码:



package com.springjdbc.demo;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Gui extends JFrame{

    /**
     * 
     */
    private static final long serialVersionUID = -3735744874051620286L;

    public static List<String> list;      //存放获取的数据表名
    public static int number;             //数据表的数量

    JLabel label = new JLabel("数据表列表");

    public Gui (String title) {
        super(title);
        this.setLayout( new FlowLayout( FlowLayout.CENTER));//布局模式

        this.add(label);
    }


    public static void main(String[] args) throws SQLException {        
        List<String> tables = getAllTableNames(ProjectConfig.DATABASE_NAME);
        System.out.println(tables);


        //设置窗口属性
        Gui gui = new Gui("数据库代码生成");
        gui.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE);//点击关闭图标是关闭窗口
        gui.setSize(350, 550);//设置窗口大小
        gui.setVisible(true);//设置窗口可见w
        gui.setLocation(200, 100);//设置左上角坐标


        //添加button
        list = getAllTableNames(ProjectConfig.DATABASE_NAME);
        number = list.size();

        for ( int i = 0; i < number; i++){

            int j = i;

            //增添按钮
            gui.add(createButton(number)[j]);
            //实现按钮监听
            createButton(number)[j].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("hello");

                }
            });

            System.out.println("hello!!!!");
        }


    }



    public static JButton[] createButton (int x) {
        JButton[] jb = new JButton[x];

        //将生成的button放入JButton型数组
        for(int k = 0; k < x; k++) {
            JButton button = new JButton(getAllTableNames(ProjectConfig.DATABASE_NAME).get(k));
            Dimension preferredSize = new Dimension(280, (500-50)/(getAllTableNames(ProjectConfig.DATABASE_NAME).size()+1));
            button.setPreferredSize(preferredSize);
            jb[k] = button;
        }
        return jb;
    }

    //保证只是注册一次驱动
    static{
        try {
            Class.forName(ProjectConfig.JDBC_DIVER_CLASS_NAME);
        } catch (ClassNotFoundException e) {
            throw new ExceptionInInitializerError(e);
        }
    }

    /**
     * 获取连接
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(ProjectConfig.JDBC_URL, ProjectConfig.JDBC_USERNAME, ProjectConfig.JDBC_PASSWORD);
    }


    public static List<String> getAllTableNames( String databasename) {
          List<String> tableNames = new ArrayList<String>();
          Connection conn = null;         

           try {
               conn = getConnection();
            DatabaseMetaData dbmd = conn.getMetaData();
            // 表名列表
            ResultSet rest = dbmd.getTables(databasename, null, null, new String[] { "TABLE" });
            // 输出 table_name
            while (rest.next()) {
              tableNames.add(rest.getString("TABLE_NAME"));
            }
           } catch (SQLException e) {
            e.printStackTrace();
           }
          return tableNames;
         }

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?