java - 如何在eclipse juno中将数据从JCombobox和JTextarea保存到数据库

标签 java swing

我正在使用 eclipse Juno 来编写我的代码。我想将数据输入数据库,但是当我单击保存按钮时,JTextarea 和 JCombobox 出现错误。

错误如下:

Cannot refer to a non-final variable textALAMAT inside an inner class defined in a different method Cannot refer to a non-final variable cbJURUSAN inside an inner class defined in a different method

这是我的代码:

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(35, 282, 475, 106);
    contentPane.add(scrollPane);

    tabelmodel = new DefaultTableModel(null,header);
    tabel = new JTable();
    tabel.setModel(tabelmodel);
    scrollPane.setViewportView(tabel);

    JLabel lblNim = new JLabel("NIM");
    lblNim.setBounds(35, 24, 46, 14);
    contentPane.add(lblNim);

    JLabel lblNama = new JLabel("NAMA");
    lblNama.setBounds(35, 59, 46, 14);
    contentPane.add(lblNama);

    JLabel lblJurusan = new JLabel("JURUSAN");
    lblJurusan.setBounds(35, 97, 46, 14);
    contentPane.add(lblJurusan);

    JLabel lblAlamat = new JLabel("ALAMAT");
    lblAlamat.setBounds(35, 138, 46, 14);
    contentPane.add(lblAlamat);

    textNIM = new JTextField();
    textNIM.setBounds(119, 18, 230, 27);
    contentPane.add(textNIM);
    textNIM.setColumns(10);

    textNAMA = new JTextField();
    textNAMA.setColumns(10);
    textNAMA.setBounds(119, 53, 230, 27);
    contentPane.add(textNAMA);

    JComboBox cbJURUSAN = new JComboBox();
    cbJURUSAN.setModel(new DefaultComboBoxModel(new String[] {"Teknik Informatika", "Teknik Komputer", "Sistem Informasi", "Sastra Inggris"}));
    cbJURUSAN.setBounds(118, 91, 231, 27);
    contentPane.add(cbJURUSAN);

    final JTextArea textALAMAT = new JTextArea();
    textALAMAT.setBounds(119, 133, 354, 90);
    contentPane.add(textALAMAT);

    JButton btnSave = new JButton("SAVE");
    btnSimpan.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0)
        {
            String jurusan = "";
            if(cbJURUSAN.getSelectedIndex() == 0)
            {
            jurusan = "Teknik Informatika";
            } 
            else if(cbJURUSAN.getSelectedIndex() == 1)
            {
            jurusan = "Teknik Komputer";
            } 
            else if(cbJURUSAN.getSelectedIndex() == 2)
            {
            jurusan = "Sistem Informasi";
            }
            else if(cbJURUSAN.getSelectedIndex() == 3)
            {
            jurusan = "Sastra Inggris";
            } 
            try
            {
                Connection konek = koneksi.getKoneksi();
                String query = "INSERT INTO mahasiswa VALUES (?,?,?,?)";
                PreparedStatement prepare = konek.prepareStatement(query);
                prepare.setInt(1,Integer.parseInt(textNIM.getText()));
                prepare.setString(2, textNAMA.getText());
                prepare.setString(3, jurusan);
                prepare.setString(4, textALAMAT.getText());
                prepare.executeUpdate();
                JOptionPane.showMessageDialog(null,"Data berhasil ditambahkan ke database");
            } 
            catch (Exception ex)
            {
                JOptionPane.showMessageDialog(null,"Data gagal ditambahkan ke database");
                System.out.println(ex);
            }
            finally
            {
                getDataTable();
            }
        }
    });
    btnSave.setBounds(49, 248, 89, 23);
    contentPane.add(btnSimpan);

谁能帮我解决这个问题吗?

最佳答案

监听器要求您将变量 textALAMATcbJURUSAN 更改为 Final。

我看到您已将 textALAMAT 作为最终的,但也将其添加到后面:

final JComboBox cbJURUSAN = new JComboBox();

关于java - 如何在eclipse juno中将数据从JCombobox和JTextarea保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37872580/

相关文章:

java - 如何在面板的其余组件上绘制停靠的 JToolBar

java - 有没有办法在远程调试期间搜索堆栈中当前位置可用的变量?

java - Android 动态标题栏

java - 在 swing 应用程序中嵌入 3D View 的库?

java - 检修台模型 Swing

java - 如何显示过程调用的进度条

java - 使用 AJP 在 Tomcat 中模拟和/或启用单点登录

java - 如何获取灰度图像中的像素值

java - 带 liquibase 的 hibernate-envers

java - 为什么 .validate() 不会更新此代码中的 contentPane?