JFrame frame = new JFrame(); JOptionPane optionPane = new JOptionPane(MESSAGE, JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null); JDialog dialog = new JDialog(frame, "Popup Box", true); dialog.setContentPane(optionPane); Timer timer = new Timer(1000, new ActionListener() { int countdown = COUNTDOWN_SECONDS; @Override public void actionPerformed(ActionEvent e) { countdown--; optionPane.setMessage(MESSAGE + " (Closing in " + countdown + " seconds)"); if (countdown <= 0) { ((Timer) e.getSource()).stop(); dialog.dispose(); } } }); timer.start(); dialog.pack(); dialog.setVisible(true);,执行后关闭进程
时间: 2023-05-29 07:07:52 浏览: 101
该代码段创建了一个带有倒计时的弹出窗口。当代码执行时,它会:
1. 创建一个 JFrame 对象(frame)。
2. 使用 JOptionPane 创建一个带有消息、信息类型和默认选项的对话框。
3. 创建一个 JDialog 对象(dialog),并将 JOptionPane 设置为其内容面板。
4. 创建一个 Timer 对象(timer),并在每秒钟触发一次。
5. 在 Timer 的 ActionListener 中,更新倒计时的值,并将消息文本更新为新的倒计时值。
6. 如果倒计时为零,则停止 Timer 并关闭对话框。
7. 打包并显示对话框。
8. 代码执行完毕后,进程将被关闭。
注意:该代码片段中的 MESSAGE 和 COUNTDOWN_SECONDS 变量需要在代码中定义或替换为实际的值。
相关问题
JFrame jf = new JFrame("功能界面"); jf.setBounds(0, 0, 700, 600); jf.setVisible(true); jf.setLayout(null); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b1 = new JButton("图书入库"); b1.setBounds(20, 90, 150, 80); JButton b2 = new JButton("图书查询"); b2.setBounds(20, 210, 150, 80); JButton b3 = new JButton("图书修改"); b3.setBounds(500, 90, 150, 80); JButton b5 = new JButton("办理借阅证登记"); b5.setBounds(20, 330, 150, 80); JButton b6 = new JButton("图书借阅管理"); b6.setBounds(500, 210, 150, 80); JButton b4 = new JButton("图书删除"); b4.setBounds(500, 330, 150, 80); JButton b7 = new JButton("退出系统"); b7.setBounds(560, 20, 90, 30); ta.setBounds(190, 90, 290, 320); txt.setBounds(120,450,300,30); JButton b8 = new JButton("确定"); b8.setBounds(440,450,70,30); JMenuBar menuBar = new JMenuBar(); JMenu menuManage = new JMenu("图书管理"); JMenu menuAbout = new JMenu("关于系统"); JMenuItem item1 = new JMenuItem("图书列表"); menuManage.add(item1); item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFrame frame = new JFrame("图书列表"); frame.setSize(600, 400); frame.setLocationRelativeTo(null); ListPanel listPanel = new ListPanel(); frame.add(listPanel); frame.setVisible(true); } }); ActionListener act = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource().equals(b1)) { insertNewbook(); }else if(e.getSource().equals(b3)) { updatebook(); }else if(e.getSource().equals(b4)) { String bid = txt.getText(); if(bid!=null) { if(dbDao.delelteBook(bid)){ int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION); }else{ int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION); } }else { return; }部分代码,点击图书删除按钮会直接弹窗提示删除失败并且bid是空值,该怎么获取输入的值并将它传入删除图书方法
你需要在按钮的监听器中获取文本框中的值,并将其传递给删除图书的方法。可以通过以下方式实现:
```
if(e.getSource().equals(b4)) {
String bid = txt.getText(); // 获取文本框中的值
if(bid!=null && !bid.isEmpty()) { // 判断值是否为空
if(dbDao.delelteBook(bid)){
int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION);
}else{
int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION);
}
}else {
JOptionPane.showMessageDialog(null, "请输入图书编号", "提示", JOptionPane.WARNING_MESSAGE);
}
}
```
在获取值后,需要判断其是否为空,如果为空则弹窗提示用户输入图书编号。如果不为空,则调用删除图书的方法。
package text6; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class domo extends JFrame implements ActionListener{ Connection con; Statement cmd; ResultSet rs; String url="jdbc:mysql://127.0.0.1:3306/support"; String driver="com.mysql.jdbc.Driver"; JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JLabel lbl_no=new JLabel("学号"); JLabel lbl_name=new JLabel("姓名"); JLabel lbl_birth=new JLabel("生日"); JLabel lbl_sex=new JLabel("性别"); JLabel lbl_study=new JLabel("学情"); JLabel lbl_live=new JLabel("宿舍"); JTextField txt_no=new JTextField(20); JTextField txt_name=new JTextField(20); JTextField txt_birth=new JTextField(20); JTextField txt_sex=new JTextField(20); JTextField txt_study=new JTextField(20); JTextField txt_live=new JTextField(20); JButton btn_add=new JButton("新增"); JButton btn_delete=new JButton("删除"); JButton btn_update=new JButton("更新"); public domo(){ jp1.add(lbl_no); jp1.add(txt_no); jp1.add(lbl_name); jp1.add(txt_name); jp1.add(lbl_birth); jp1.add(txt_birth); jp1.add(lbl_sex); jp1.add(txt_sex); jp1.add(lbl_study); jp1.add(txt_study); jp1.add(lbl_live); jp1.add(txt_live); add(jp1,BorderLayout.CENTER); jp2.add(btn_add); jp2.add(btn_delete); jp2.add(btn_update); add(jp2,BorderLayout.SOUTH); btn_add.addActionListener(this); btn_delete.addActionListener(this); btn_update.addActionListener(this); setBounds(250,250,250,250); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(btn_add.isSelected()) { try { Class.forName(driver); con=DriverManager.getConnection(url,"root",""); cmd=con.createStatement(); String sql="select * from student where sno='" + txt_no.getText() + "'";//查看是否存在已有的uno rs=cmd.executeQuery(sql); if(rs.next()) if(rs.getString(1).equals(txt_no.getText())==false) JOptionPane.showMessageDialog(null, "成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); }catch(Exception e1) { System.out.print(e1); } } } public static void main(String args[]) { JFrame.setDefaultLookAndFeelDecorated(true); new domo(); } }改错
1. 按钮的判断应该使用 `if(e.getSource() == btn_add)`,而不是 `if(btn_add.isSelected())`。
2. 在查询语句中应该使用 `where sno='" + txt_no.getText() + "'"`,而不是 `where uno='" + txt_no.getText() + "'"`。
3. 在成功提示框中,应该显示“成功”,而不是“失败”。
4. 在异常处理中,应该使用 `e1.printStackTrace()`,而不是 `System.out.print(e1)`。
5. 在按钮的事件处理中,应该加入删除和更新按钮的处理代码。
阅读全文