下面的代码是经过菜单事件调用,第一次调用的时候布局管理器可以使用,但过后再用的话布局完全混乱,搞不明白,代码如下,请各位给小弟讲解一下,谢谢了.
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;public class DelUser implements ActionListener {
private JLabel user = new JLabel("用户名:");
private JLabel pwd = new JLabel("口令:");
private JTextField _user = new JTextField(8);
private JPasswordField _pwd = new JPasswordField(8);
private JButton del_bt = new JButton("删除");
DBcon dbcon = new DBcon();
Connection con = dbcon.getConnection();
PreparedStatement ps;
ResultSet rs;
String sql = "";
String inputValue = "";
GridBagLayout gbLayoutObj;
GridBagConstraints gbcObj;
private JPanel panelObj = new JPanel();
private JFrame jFrame;
public DelUser(JFrame jFrame) {
this.jFrame = jFrame;
}
public void actionPerformed(ActionEvent e) {
gbLayoutObj = new GridBagLayout();
gbcObj = new GridBagConstraints();
panelObj.setLayout(gbLayoutObj);
gbcObj.anchor = GridBagConstraints.EAST;
gbcObj.gridx = 1;
gbcObj.gridy = 1;
gbLayoutObj.setConstraints(user, gbcObj);
gbcObj.gridy = 2;
gbLayoutObj.setConstraints(pwd, gbcObj);
gbcObj.anchor = GridBagConstraints.WEST;
gbcObj.gridx = 2;
gbcObj.gridy = 1;
gbLayoutObj.setConstraints(_user, gbcObj);
gbcObj.gridy = 2;
gbLayoutObj.setConstraints(_pwd, gbcObj);
gbcObj.anchor = GridBagConstraints.SOUTH;
gbcObj.gridx = 1;
gbcObj.gridy = 3;
gbLayoutObj.setConstraints(del_bt, gbcObj);
_user.setEnabled(false);
_pwd.setEnabled(false);
inputValue = JOptionPane.showInputDialog("请输入要删除用户的Id");
if(inputValue == null) { //对话框取消按钮事件
return;
}
if(inputValue.equals("")) { //对话框确定按钮事件
JOptionPane.showMessageDialog(null, "请输入用户Id", "提示信息 ",JOptionPane.ERROR_MESSAGE);
this.actionPerformed(e);
}
else {
try {
sql = "select * from user where Id = ?";
ps = con.prepareStatement(sql);
ps.setString(1, inputValue);
rs = ps.executeQuery();
if(rs.next()) {
panelObj.add(user);
panelObj.add(_user);
panelObj.add(pwd);
panelObj.add(_pwd);
panelObj.add(del_bt);
_user.setText(rs.getString(2));
_pwd.setText(rs.getString(3));
del_bt.setEnabled(true);
}
else {
JOptionPane.showMessageDialog(null, "用户不存在!");
del_bt.setEnabled(false);
}
}
catch(SQLException se) {
System.out.println("error:" + se.getMessage());
}
}
del_bt.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(JOptionPane.showConfirmDialog(null, "确定删除该用户?", "提示", JOptionPane.YES_NO_OPTION) == 1) {
return;
}
else {
try {
sql = "delete from user where Id = ?";
ps = con.prepareStatement(sql);
ps.setString(1, inputValue);
int i = ps.executeUpdate();
if(i > 0) {
JOptionPane.showMessageDialog(null, "删除成功!");
_user.setText("");
_pwd.setText("");
del_bt.setEnabled(false);
}
else {
JOptionPane.showMessageDialog(null, "删除失败!");
}
}
catch(SQLException se) {
System.out.println("error:" + se.getMessage());
}
}
}
}
);
jFrame.setContentPane(panelObj);
jFrame.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;public class DelUser implements ActionListener {
private JLabel user = new JLabel("用户名:");
private JLabel pwd = new JLabel("口令:");
private JTextField _user = new JTextField(8);
private JPasswordField _pwd = new JPasswordField(8);
private JButton del_bt = new JButton("删除");
DBcon dbcon = new DBcon();
Connection con = dbcon.getConnection();
PreparedStatement ps;
ResultSet rs;
String sql = "";
String inputValue = "";
GridBagLayout gbLayoutObj;
GridBagConstraints gbcObj;
private JPanel panelObj = new JPanel();
private JFrame jFrame;
public DelUser(JFrame jFrame) {
this.jFrame = jFrame;
}
public void actionPerformed(ActionEvent e) {
gbLayoutObj = new GridBagLayout();
gbcObj = new GridBagConstraints();
panelObj.setLayout(gbLayoutObj);
gbcObj.anchor = GridBagConstraints.EAST;
gbcObj.gridx = 1;
gbcObj.gridy = 1;
gbLayoutObj.setConstraints(user, gbcObj);
gbcObj.gridy = 2;
gbLayoutObj.setConstraints(pwd, gbcObj);
gbcObj.anchor = GridBagConstraints.WEST;
gbcObj.gridx = 2;
gbcObj.gridy = 1;
gbLayoutObj.setConstraints(_user, gbcObj);
gbcObj.gridy = 2;
gbLayoutObj.setConstraints(_pwd, gbcObj);
gbcObj.anchor = GridBagConstraints.SOUTH;
gbcObj.gridx = 1;
gbcObj.gridy = 3;
gbLayoutObj.setConstraints(del_bt, gbcObj);
_user.setEnabled(false);
_pwd.setEnabled(false);
inputValue = JOptionPane.showInputDialog("请输入要删除用户的Id");
if(inputValue == null) { //对话框取消按钮事件
return;
}
if(inputValue.equals("")) { //对话框确定按钮事件
JOptionPane.showMessageDialog(null, "请输入用户Id", "提示信息 ",JOptionPane.ERROR_MESSAGE);
this.actionPerformed(e);
}
else {
try {
sql = "select * from user where Id = ?";
ps = con.prepareStatement(sql);
ps.setString(1, inputValue);
rs = ps.executeQuery();
if(rs.next()) {
panelObj.add(user);
panelObj.add(_user);
panelObj.add(pwd);
panelObj.add(_pwd);
panelObj.add(del_bt);
_user.setText(rs.getString(2));
_pwd.setText(rs.getString(3));
del_bt.setEnabled(true);
}
else {
JOptionPane.showMessageDialog(null, "用户不存在!");
del_bt.setEnabled(false);
}
}
catch(SQLException se) {
System.out.println("error:" + se.getMessage());
}
}
del_bt.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(JOptionPane.showConfirmDialog(null, "确定删除该用户?", "提示", JOptionPane.YES_NO_OPTION) == 1) {
return;
}
else {
try {
sql = "delete from user where Id = ?";
ps = con.prepareStatement(sql);
ps.setString(1, inputValue);
int i = ps.executeUpdate();
if(i > 0) {
JOptionPane.showMessageDialog(null, "删除成功!");
_user.setText("");
_pwd.setText("");
del_bt.setEnabled(false);
}
else {
JOptionPane.showMessageDialog(null, "删除失败!");
}
}
catch(SQLException se) {
System.out.println("error:" + se.getMessage());
}
}
}
}
);
jFrame.setContentPane(panelObj);
jFrame.setVisible(true);
}
}
解决方案 »
- 关于flex和red5开发的网络视频会议问题,大家都来帮帮忙,让我回家过个好年啊,谢谢了
- 两个线程锁定同一对象,A线程wait,B线程成功之后调用notify,那是不是notify之后一定是正在wait的线程重新获得控制权呢?
- 非UI线程访问UI线程
- 这个式子为什么可以实现两个数的调换?
- 用java如何获取硬件信息???用java怎样编写类似于WINDOWS的任务管理器--》性能???
- 求助!!!高手进~~~~~~~~
- 缓冲区和流之间是什么样的关系啊?请高手进来总结一下io的整个过程,我分不多,不好意思!
- Java书籍问题
- 有谁知道UltraEdit9.10的注册码。马上给分!!!!
- 有哪位大虾对MySql比较熟悉呀,我怎么连接不上数据库啊?
- 用bat批处理jar的菜鸟问题
- java传递结构体数组给oracle存储过程,性能太差了
看起来是不对的,不能每次都new一个。
另外,是不是不能区分:GridBagLayout和GridBagConstraints
1、要明确一点概念:每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,称为显示区域。
网格的总体方向取决于容器的 ComponentOrientation 属性。对于水平的从左到右的方向,网格坐标 (0,0) 位于容器的左上角,其中 X 向右递增,Y 向下递增。2、要使用GidBagLayout要先定义一个GridBagConstraints对象。
java API说明如下:“每个由 GridBagLayout 管理的组件都与 GridBagConstraints 的实例相关联。Constraints 对象指定组件在网格中的显示区域以及组件在其显示区域中的放置方式。”