【发布时间】:2015-07-25 06:16:28
【问题描述】:
我正在处理一个摇摆项目,我有一个 JDialogbox,其中包含两个文本字段和 1 个组合框以及两个按钮“确定”和“取消”以及一个框架,其中有一个文本区域,其作用类似于记事本和所有这些组件每当我在 JDialog 中插入数据并单击 Ok 时,都连接到 Oracle 数据库,数据存储在数据库中,并调用包含文本区域的框架,当我保存写入 textarea 中的数据并单击保存按钮时,插入的数据被保存在数据库中的不同行,但与 JDialog 组件不在同一行
import javax.swing.*;
import java.sql.*;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.*;
import java.awt.*;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class newmenu implements ActionListener {
JDialog jf;
JButton okBtn,CanBtn;
JTextField tf1,tf3;
JComboBox type;
JLabel prName,prType,prWritter;
JFrame frame;
JMenuBar menuBar;
JMenu file;
JMenuItem open, save, exit;
JFileChooser fileChooser;
JTextArea textArea;
public newmenu(){
jf = new JDialog();
jf.setTitle("New Report");
okBtn = new JButton("Ok");
okBtn.setBounds(10, 140, 60, 20);
okBtn.addActionListener(this);
CanBtn = new JButton("Cancel");
CanBtn.addActionListener(this);
CanBtn.setBounds(100, 140, 100, 20);
tf1 = new JTextField();
tf1.setBounds(150, 20, 100, 20);
String r_Type [] = {"Cosmetics","Pharametical","Medical"};
type = new JComboBox(r_Type);
type.setBounds(150, 60, 100, 20);
tf3 = new JTextField();
tf3.setBounds(150, 100, 100, 20);
prName = new JLabel("Report Name");
prName.setBounds(10, 20, 100, 20);
prType = new JLabel("Report type");
prType.setBounds(10,60,100,20);
prWritter = new JLabel("Report Written");
prWritter.setBounds(10,100,100,20);
jf.add(okBtn);
jf.add(CanBtn);
jf.add(tf1);
jf.add(type);
jf.add(tf3);
jf.add(prName);
jf.add(prType);
jf.add(prWritter);
jf.setSize(300, 200);
jf.setResizable(false);
jf.setLayout(null);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.setVisible(true);
}
public void notepad(){
frame = new JFrame();
frame.setTitle("Notepad");
file = new JMenu("File");
save = new JMenuItem("Save");
save.addActionListener(this);
exit = new JMenuItem("Exit");
exit.addActionListener(this);
textArea = new JTextArea();
fileChooser = new JFileChooser();
menuBar = new JMenuBar();
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(textArea);
file.add(save);
file.add(exit);
menuBar.add(file);
frame.setJMenuBar(menuBar);
frame.setSize(800, 600);
frame.setVisible(true);
}
public void insert(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","root");
Statement st = con.createStatement();
st.executeUpdate("insert into report (reportname, reporttype,clientname) VALUES('"
+ tf1.getText() + "','"
+ tf3.getText() + "','" + type.getSelectedItem()+ "')");
}
catch (Exception e1)
{
System.out.println("Exception:" + e1);
}
}
public void notepadinsert(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","root");
Statement st = con.createStatement();
st.executeUpdate("insert into report (report) VALUES('"
+ textArea.getText() + "')");
}
catch (Exception e1)
{
System.out.println("Exception:" + e1);
}
}
public void actionPerformed(ActionEvent ev){
if(ev.getSource()==okBtn){
if( tf1.getText().trim().equals("")){
okBtn.setEnabled(false);
if(tf1.getText().hashCode() != 0){
okBtn.setEnabled(true);
}
}
else{
okBtn.setEnabled(true);
jf.dispose();
insert();
notepad();
}
}
else if(ev.getSource()==CanBtn){
System.exit(0);
}
else if(ev.getSource()==save){
notepadinsert();
}
else if(ev.getSource()==exit){
System.exit(0);
}
}
public static void main(String args[]){
new newmenu();
}
}
【问题讨论】:
-
为此,您必须一次保存所有数据,而不是分段保存
-
你能不能通过自定义我的代码来解释一下。
-
使用更新命令而不是引用相同的 ID。
-
其实我没有安装数据库而且我的系统很旧...所以我只能告诉你怎么做...不会是我可以检查它.. .
-
这样做有不同的动作侦听器并在插入数据之前调用 notepad() 方法...然后从记事本中获取数据并调用 insert 方法并传递您要插入的值.. . 它只会在一行中...