苑大黑 ᕕ( ᐛ )ᕗ 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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?