Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Database/JDBC/SQL/JDO/Hibernate » Other DB  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 如何实现一个新的窗口被关闭时主窗口的设置发生改变
火山一角





发贴: 27
积分: 0
于 2006-09-26 18:04 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
以下是我编写的一个GUI程序,程序中将访问数据库的结果显示在表格中。现在我想通过按纽事件修改数据库中的记录。点击某一个按钮时则弹出一新的窗口,而当其中的确定按纽被单击时则会关闭该窗口,同时一些输入的值以数组形式被返回,并且主窗口的设置发生改变。就象图中显示的那样,当点“OK”时则原有的设置发生改变。
程序代码如下:
Test.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Test
{
  public static void main(String[] args)
  {
    EnrollManager enrollManager=new EnrollManager();
    enrollManager.init();
    enrollManager.setSize(400,200);
    enrollManager.show();
  }
}


EnrollManager.java
import java.sql.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class EnrollManager extends JFrame implements ActionListener
{
  Container contentPane;
  JLabel record;
  JTable table = null;
DefaultTableModel defaultModel;
JScrollPane scrollPane;
  JPanel buttonPanel;
  public static JButton plus;
  public static JButton delete;
  public static JButton modify;
  Connection con=null;
  
  String query = "SELECT * FROM clients";
  String insert="INSERT INTO clients(id,Logname,password,Email) VALUES(?,?,?,?)";
  String url="jdbc:odbc:bookstore";
  public static Statement stmt=null;
  public static PreparedStatement pstmt=null;
  public static ResultSet r=null;
  
  public EnrollManager()
  {
    int id=-1;
    String logName=null;
    String password=null;
    String email=null;

  try
    {
    Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(java.lang.ClassNotFoundException e)
    {
    System.err.print("ClassNotFoundException: ");
    System.err.println(e.getMessage());
    }

    contentPane =getContentPane();
    contentPane.setSize(400,120);
    setTitle("用户注册信息管理系统");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public void init()
  {
    record=new JLabel("数据库中现有记录如下:",JLabel.CENTER);
    
    String[] property={"id","logName","password","Email"};
    String[][] dataRecord=new String[3][4];
    
    
    defaultModel = new DefaultTableModel(dataRecord,property);
table = new JTable(defaultModel);

//获取表格的编辑器
TableCellEditor tableCellEditor=table.getDefaultEditor(String.class);
    if (tableCellEditor!=null)
    {
      if (tableCellEditor instanceof DefaultCellEditor)
      ((DefaultCellEditor)tableCellEditor).setClickCountToStart(1);
    }      //设置表格的编辑行为
    //设置表格视窗大小
table.setPreferredScrollableViewportSize(new Dimension(400,80));
table.setCellSelectionEnabled(true);
JScrollPane scrollPane = new JScrollPane(table);

try
    {
      con = DriverManager.getConnection (url);
      stmt = con.createStatement();
      pstmt= con.prepareStatement(insert);
      r = stmt.executeQuery(query);
      for(int i=0;r.next();i++)
      {
    String r1=Integer.toString(r.getInt("id"));
    String r2=r.getString("Logname");
    String r3=r.getString("password");
    String r4=r.getString("Email");
    
    //将数据库文件中的值显示在表格中
    defaultModel.setValueAt(r1,i,0);
    defaultModel.setValueAt(r2,i,1);
    defaultModel.setValueAt(r3,i,2);
    defaultModel.setValueAt(r4,i,3);
      }
      r.close();
    }
    catch (SQLException ex)
    {
    ex.printStackTrace();
    }
catch(ArrayIndexOutOfBoundsException e){;}

buttonPanel=new JPanel();
plus  =new JButton("增加记录");
delete  =new JButton("删除记录");
modify  =new JButton("修改记录");
plus.addActionListener(this);
delete.addActionListener(this);
modify.addActionListener(this);
buttonPanel.add(plus);
buttonPanel.add(delete);
buttonPanel.add(modify);

contentPane.setLayout(new BorderLayout());
contentPane.add(record,  BorderLayout.NORTH);
contentPane.add(scrollPane,  BorderLayout.CENTER);
contentPane.add(buttonPanel,BorderLayout.SOUTH);
  }
  
  public void actionPerformed(ActionEvent e)
  {
    String r1=null;
    String r2=null;
    String r3=null;
    String r4=null;
    if(e.getSource()==plus)
    {
      try
      {
        PlusPanel plusPanel=new PlusPanel();
        plusPanel.setTitle("添加用户注册信息");
        plusPanel.setSize(300,150);
        plusPanel.setVisible(true);
        for(;;)
        {
          if(plusPanel.isClicked())
          {
            String[] data=plusPanel.getRecord();
            defaultModel.addRow(data);

            //增加数据库中的记录
            con = DriverManager.getConnection (url);
             pstmt= con.prepareStatement(insert);
            pstmt.setInt(1,4);
            pstmt.setString(2,data[1]);
            pstmt.setString(3,data[2]);
            pstmt.setString(4,data[3]);
            pstmt.executeUpdate();
            break;
          }
          else {;}  
        }
        
      }
      catch (SQLException ex) {;}
    }  
    /*if(e.getSource()==delete)
    {
      DeletePanel deletePanel=new DeletePanel();
      deletePanel.setTitle("修改用户注册信息");
      deletePanel.setSize(300,150);
      deletePanel.setVisible(true);
      int row=deletePanel.getRow();
      defaultModel.removeRow(row);
      
      try{stmt.executeUpdate("DELETE FROM clients WHERE id=row");}
      catch (SQLException ex){;}
    }
    if(e.getSource()==modify)
    {
      ModifyPanel modifyPanel=new ModifyPanel();
      modifyPanel.setSize(300,150);
      modifyPanel.setVisible(true);
      String[] record=modifyPanel.getRecord();
      int i=Integer.parseInt(record[0]);
      //for(defaultModel.getRowCount())//判断输入的ID是否存在于表中
      for(int j=0;j<4;j++)
        defaultModel.setValueAt(record[j],i,j);
    }*/
  }
}


PlusPanel.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class PlusPanel extends JFrame implements ActionListener
{
  private JLabel idLabel=new JLabel("用户ID:");
  private JLabel logNameLabel=new JLabel("用户名:");
  private JLabel passwordLabel=new JLabel("密码:");
  private JLabel emailLabel=new JLabel("Email:");
  public static boolean buttonClicked=false;
  private JTextField idField=new JTextField(10);
  private JTextField logNameField=new JTextField(10);
  private JTextField passwordField=new JTextField(20);
  private JTextField emailField=new JTextField(20);
  private JButton sure=new JButton("确定");
  public String[] record=new String[4];
  Container contentPane;
  
  public PlusPanel()
  {
    contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout());
    contentPane.add(idLabel);    contentPane.add(idField);
    contentPane.add(logNameLabel);  contentPane.add(logNameField);
    contentPane.add(passwordLabel);  contentPane.add(passwordField);
    contentPane.add(emailLabel);  contentPane.add(emailField);
    contentPane.add(sure);
    sure.addActionListener(this);
  }
  
  public void actionPerformed(ActionEvent e)
  {
    
    if(e.getSource()==sure)
    {
      buttonClicked=true;
      record[0]=idField.getText();
      record[1]=logNameField.getText();
      record[2]=passwordField.getText();
      record[3]=emailField.getText();
    }
  }
  
  public boolean isClicked()
  {
    return buttonClicked;
  }
  
  public String[] getRecord()
  {
    return record;
  }
}


知道如何实现这个功能的大虾帮个忙修改一下或者给一个提示,谢谢!

说明:附件是相关的数据库文件,数据源名为bookstore.

bk.mdb (388.0k)


火山一角 edited on 2006-09-26 18:08


flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923