public class Exit extends JPanel{ JButton exit=new JButton("安全退出"); JLabel j1,j2,j3,j4,j5,j6; public Exit(){ setLayout(null); exit.setBounds(260,230,100,25); j3=new JLabel("zzuli"); j3.setFont(new Font("方正舒体", Font.ITALIC, 100)); j3.setBounds(180,0,400,300); add(exit); add(j3); exit.addActionListener(new ActionListener(){ //为重置按钮添加监听事件 //同时清空name、password的数据 public void actionPerformed(ActionEvent arg0) { // TODO 自动生成方法存根 System.exit(0); } }); } }
时间: 2024-02-14 11:14:32 浏览: 20
这段代码是一个Java类,名为Exit。它继承了JPanel类,包含了一个名为exit的JButton对象和五个名为j1、j2、j3、j4、j5、j6的JLabel对象。
在构造函数中,它首先设置当前类的布局为null,然后设置了exit按钮的位置和大小。接着,它创建了一个名为j3的JLabel对象,用于显示“zzuli”这个字符串,设置了它的字体和位置。最后,它将exit按钮和j3标签添加到当前类的面板中。
同时,它给exit按钮添加了一个ActionListener监听器,当按钮被点击时,会执行actionPerformed()方法,该方法会调用System.exit(0)方法,退出程序。这个类主要用于提供一个安全退出的功能。
相关问题
修改这段代码实现选择表格一行信息删除package frame; import javax.swing.; import java.awt.; import java.awt.event.ActionEvent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; //添加页面 public class EditDialog extends BaseDialog{ DataChangelisenter dataChangelisenter; public void setDataChangelisenter(DataChangelisenter dataChangelisenter) { this.dataChangelisenter = dataChangelisenter; } @Override public void init() { setLayout(new FlowLayout()); //布局 setTitle("修改图书信息"); JPanel jp0=new JPanel(); JLabel l0 = new JLabel("id"); JTextField t0 = new JTextField(); t0.setPreferredSize(new Dimension(300,30)); jp0.add(l0); jp0.add(t0); JPanel jp1=new JPanel(); JLabel l1 = new JLabel("书名"); JTextField t1 = new JTextField(); t1.setPreferredSize(new Dimension(300,30)); jp1.add(l1); jp1.add(t1); JPanel jp2=new JPanel(); JLabel l2 = new JLabel("作者"); JTextField t2 = new JTextField(); t2.setPreferredSize(new Dimension(300,30)); jp2.add(l2); jp2.add(t2); JPanel jp3=new JPanel(); JLabel l3 = new JLabel("分类"); JTextField t3 = new JTextField(); t3.setPreferredSize(new Dimension(300,30)); jp3.add(l3); jp3.add(t3); JPanel jp4=new JPanel(); JLabel l4 = new JLabel("出版社"); JTextField t4 = new JTextField(); t4.setPreferredSize(new Dimension(300,30)); jp4.add(l4); jp4.add(t4); JPanel jp5=new JPanel(); JLabel l5 = new JLabel("数量"); JTextField t5 = new JTextField(); t5.setPreferredSize(new Dimension(300,30)); jp5.add(l5); jp5.add(t5); add(jp0); add(jp1); add(jp2); add(jp3); add(jp4); add(jp5); JButton b1 = new JButton("保存"); b1.setPreferredSize(new Dimension(150,30)); b1.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { String id = t0.getText(); String sname = t1.getText(); String author = t2.getText(); String classify = t3.getText(); String press = t4.getText(); String quantity = t5.getText(); Connection con = DBUtil.getConnect(); String sql = "UPDATE tushu SET sname=?,author=?,classify=?,press=?,quantity=? WHERE id=?"; try { PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,sname); ps.setString(2,author); ps.setString(3,classify); ps.setString(4,press); ps.setString(5,quantity); ps.setString(6,id); int result = ps.executeUpdate(); if (result>0){ JOptionPane.showMessageDialog(EditDialog.this,"修改成功"); // new StudentFrame(); dataChangelisenter.dataChange(); dispose(); }else { JOptionPane.showMessageDialog(EditDialog.this,"修改失败"); } } catch (SQLException throwables) { throwables.printStackTrace(); } } }); add(b1); } }
修改后的代码如下:
```
package frame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class EditDialog extends BaseDialog{
DataChangelisenter dataChangelisenter;
JTable table;
public void setDataChangelisenter(DataChangelisenter dataChangelisenter) {
this.dataChangelisenter = dataChangelisenter;
}
public void setTable(JTable table) {
this.table = table;
}
@Override
public void init() {
setLayout(new FlowLayout()); // 布局
setTitle("修改图书信息");
JPanel jp0 = new JPanel();
JLabel l0 = new JLabel("id");
JTextField t0 = new JTextField();
t0.setPreferredSize(new Dimension(300, 30));
jp0.add(l0);
jp0.add(t0);
JPanel jp1 = new JPanel();
JLabel l1 = new JLabel("书名");
JTextField t1 = new JTextField();
t1.setPreferredSize(new Dimension(300, 30));
jp1.add(l1);
jp1.add(t1);
JPanel jp2 = new JPanel();
JLabel l2 = new JLabel("作者");
JTextField t2 = new JTextField();
t2.setPreferredSize(new Dimension(300, 30));
jp2.add(l2);
jp2.add(t2);
JPanel jp3 = new JPanel();
JLabel l3 = new JLabel("分类");
JTextField t3 = new JTextField();
t3.setPreferredSize(new Dimension(300, 30));
jp3.add(l3);
jp3.add(t3);
JPanel jp4 = new JPanel();
JLabel l4 = new JLabel("出版社");
JTextField t4 = new JTextField();
t4.setPreferredSize(new Dimension(300, 30));
jp4.add(l4);
jp4.add(t4);
JPanel jp5 = new JPanel();
JLabel l5 = new JLabel("数量");
JTextField t5 = new JTextField();
t5.setPreferredSize(new Dimension(300, 30));
jp5.add(l5);
jp5.add(t5);
add(jp0);
add(jp1);
add(jp2);
add(jp3);
add(jp4);
add(jp5);
JButton b1 = new JButton("保存");
b1.setPreferredSize(new Dimension(150, 30));
b1.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
String id = t0.getText();
String sname = t1.getText();
String author = t2.getText();
String classify = t3.getText();
String press = t4.getText();
String quantity = t5.getText();
Connection con = DBUtil.getConnect();
String sql = "UPDATE tushu SET sname=?,author=?,classify=?,press=?,quantity=? WHERE id=?";
try {
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,sname);
ps.setString(2,author);
ps.setString(3,classify);
ps.setString(4,press);
ps.setString(5,quantity);
ps.setString(6,id);
int result = ps.executeUpdate();
if (result > 0){
JOptionPane.showMessageDialog(EditDialog.this,"修改成功");
// 删除选中的行
int selectedRow = table.getSelectedRow();
DefaultTableModel model = (DefaultTableModel) table.getModel();
if (selectedRow != -1) {
model.removeRow(selectedRow);
}
dataChangelisenter.dataChange();
dispose();
}else {
JOptionPane.showMessageDialog(EditDialog.this,"修改失败");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
});
add(b1);
}
}
```
在这个代码中,我们添加了一个 `setTable` 方法,用于设置需要操作的表格对象。然后,在保存按钮的事件监听器中,我们通过 `table.getSelectedRow()` 来获取当前选中的行,然后使用 `DefaultTableModel` 的 `removeRow` 方法来删除该行数据。最后,我们调用 `dataChangelisenter.dataChange()` 方法来通知主界面数据已经发生了改变。
详细解读以下Java代码:import java.awt.; import java.awt.event.; import javax.swing.*; public class tanchishe extends JFrame { private JPanel contentPane; //窗体内容网格 private JButton btnStart = new JButton("开始"); //游戏开始按钮 private JButton btnPause = new JButton("暂停"); //游戏暂停按钮 private JButton btnExit = new JButton("退出"); //游戏退出按钮 private JPanel pnlTop = new JPanel(); //顶部按钮和分数面板 private JPanel pnlLeft = new JPanel(); //左侧面板 private JPanel playPanel = new JPanel(); //游戏区面板 private BorderLayout borderLayout1 = new BorderLayout(); //容器布局管理器 private BorderLayout borderLayout2 = new BorderLayout(); private GridLayout rbtnLayout = new GridLayout(10, 1, 1, 1); private static final int UP = 1,LEFT = 2,DOWN = 3,RIGHT = 4;//蛇运动方向 private static final int ROWS = 30; //游戏区行数 private static final int COLS = 50; //游戏区列数 private boolean isPause = false; //游戏暂停标志 private boolean isEnd; //游戏结束标志 private SnakeBody snake; //贪食蛇 private int score = 0; //当前得分 SnakeThread thread = new SnakeThread(); //游戏主线程 private GridLayout grid1 = new GridLayout(ROWS,COLS,0,0); //游戏区布局 private JButton[][] blocks; //游戏区的所有方块 JPanel jPanel2 = new JPanel(); JLabel jLabel1 = new JLabel("得分:"); JLabel lblScroe = new JLabel("0"); ButtonGroup buttonGroup1 = new ButtonGroup(); JRadioButton rbtnLow = new JRadioButton("初级", true); JRadioButton rbtnMid = new JRadioButton("中级"); JRadioButton rbtnHigh = new JRadioButton("高级");
这段代码是一个Java语言编写的贪食蛇游戏,使用了Swing和AWT图形用户界面工具包。它定义了一个名为tanchishe的类,该类继承了JFrame类,表示它是一个窗口。
在类的定义中,有一些成员变量,如contentPane表示窗口内容,btnStart、btnPause和btnExit表示游戏开始、暂停和退出按钮,pnlTop、pnlLeft和playPanel分别表示顶部按钮和分数面板、左侧面板和游戏区面板等。此外,还有一些常量,如UP、LEFT、DOWN和RIGHT表示蛇运动的方向,ROWS和COLS表示游戏区的行数和列数等。
类中定义了一个SnakeBody类的对象snake,表示贪食蛇,还有一个SnakeThread类的对象thread,表示游戏主线程。在类的构造函数中,初始化了窗口和各个组件,如设置窗口的大小、标题、布局管理器等,创建游戏区的所有方块,为游戏区和分数面板添加组件等。
代码中使用了一些AWT和Swing组件,如JPanel、JButton、JLabel、ButtonGroup、JRadioButton等,以及一些布局管理器,如BorderLayout、GridLayout等,来实现游戏的界面和功能。同时,为了响应用户的操作,还添加了一些事件监听器,如ActionListener、KeyListener等。