当前位置: 首页 > 知识库问答 >
问题:

在Swing中加载帧时,如何在JDateCheoser上设置焦点?

何章横
2023-03-14

当帧加载时,如何在日期选择器上显示焦点?

  1. 如何验证用户只能输入日期格式的文本字段和
  2. 如何在Swing中将焦点设置在jdatechooser图标上。

代码

private void jDateChooser2FocusGained(java.awt.event.FocusEvent evt) {
    // TODO add your handling code here:
        //JDateChooser2 jdc = new JDateChooser2("DD/MM/YYYY", true);
    //jDateChooser2.getDateEditor().getUiComponent().requestFocusInWindow();
  jDateChooser2.requestFocusInWindow();

}      
public class welcome extends javax.swing.JFrame {

    public static final String DATE_FORMAT_NOW = "dd/MMM/YYYY ";
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
    Date date = new Date();



    /**
     * Creates new form welcome
     */
    public welcome() {
        initComponents();



         sdf.setLenient(false);

         String dt = sdf.format(cal.getTime());
         System.out.println(dt);


            try  
            {  
                date = sdf.parse(dt); 
                 System.out.println(date);
            }  
            catch(ParseException pe)  
            {  
                System.out.println("pe: " + pe.getMessage());  
                Toolkit.getDefaultToolkit().beep();  
            }  
            jLabel3.setText(dt);
            jTextField1.setText(dt);
     }

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {                                       
        // TODO add your handling code here:
   //   System.out.println("guihgio");
      if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

            System.out.println("enter press key");


              this code is not working//

      char c = evt.getKeyChar();
      if (!((c >= '0') && (c <= '9') ||
         (c == KeyEvent.VK_BACK_SPACE) ||
         (c == KeyEvent.VK_DELETE) || (c == KeyEvent.VK_SLASH)))        
      {

           JOptionPane.showMessageDialog(null, "Please Enter Valid");
           evt.consume();
      }
  }
     if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
        //password pwd = new password();
        //pwd.setVisible(true);










     jSpinner1.requestFocus();

       if (evt.getSource() == jSpinner1) //add
    {
        try {
            String host = "jdbc:mysql://localhost:3306/indospirit";
            String uName = "root";
            String uPass = "paras123";

            //Class.forName("com.mysql.jdbc.Driver").newInstance();
            java.sql.Driver d = new com.mysql.jdbc.Driver();

            Connection con = DriverManager.getConnection(host, uName, uPass);

            PreparedStatement ps;
                System.out.println("weww");

      ps = con.prepareStatement("INSERT INTO `log1`(`date`)VALUES('" + dateString + "')");

            int i = ps.executeUpdate();

            if (i > 0) {
                JOptionPane.showMessageDialog(null, "Record Added");
            } else {
                JOptionPane.showMessageDialog(null, "Record NOT Added");
            }
        } catch (SQLException ex) {
            //ex.printStackTrace();
            System.err.println(ex.toString());
        } catch (Exception ex1) {
            //ex1.printStackTrace();
            System.err.println(ex1.toString());
        }
    }

    try {
        String host = "jdbc:mysql://localhost:3306/indospirit";
        String uName = "root";
        String uPass = "paras123";

        //Class.forName("com.mysql.jdbc.Driver").newInstance();
        java.sql.Driver d = new com.mysql.jdbc.Driver();

        Connection con = DriverManager.getConnection(host, uName, uPass);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * from `log1` ORDER BY `date` DESC limit 1");

        while (rs.next()) {

            int col = rs.getInt("id");
            String str = rs.getString("date");

            jLabel10.setText(str);

            System.out.println(col + " " + str + " ");

        }

    } catch (SQLException ex) {
        System.err.println(ex.toString());
    } catch (Exception ex1) {
        System.err.println(ex1.toString());
    }

         } 


        event not working
     how could  I check THAT date Enterd by user in date format in JFormattedTextField...please help  IN KEY PRESSED EVENT

       my code is here

private void jFormattedTextField1KeyPressed(java.awt.event.KeyEvent evt){
//TODO在此处添加处理代码:

    System.out.println(evt.getKeyChar());

   if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

       Date date = (Date) evt.getSource();
      if(!(date.equals(format)))
      {
          evt.consume();
      }
   }

共有1个答案

东郭宏深
2023-03-14

“如何验证用户只能输入日期格式的文本字段和”

IMHO获取用户输入的日期是一个不同的坏主意。验证输入将成为一个头疼的问题,而且对程序来说效率很低,因为用户可以输入任何字符组合。相反,您可以使用DateListModel使用JSpinner

请参阅Spinner教程SpinnerDateModel javadoc

SimpleDateFormat formatter = new SimplDateFormat(DATE_FORMAT_NOW);
String dateString = textField.getText();
Date date;
try {
    date = formatter.parse(dateString);
} catch (ParseException) {
    statusLabel.setText("Please enter a valid date");
    // or JOptionPane.showMessageDialog(null, "Please Enter a valid Date");
}

更新尝试此

导入java.util.Date;导入java.text.SimpleDateFormat;导入javax.swing.*;

public class SpinnerDateTest {

    public static void main(String[] args) {
        Date date = new Date();
        JSpinner spinner = new JSpinner();
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM//yyyy");
        String dateString = formatter.format(date);
        spinner.setModel(new SpinnerListModel(new String[]{dateString}));
        JOptionPane.showConfirmDialog(null, spinner, "Spinner:"
                ,JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);

    }
}

或使用spinnerDateModel

public static void main(String[] args) {
    Date date = new Date();
    JSpinner spinner = new JSpinner();
    spinner.setModel(new SpinnerDateModel(date, null, null, Calendar.DAY_OF_WEEK));
    JOptionPane.showConfirmDialog(null, spinner, "Spinner:"
            ,JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);

}
 类似资料:
  • 问题内容: 我让我的游戏在没有鼠标的情况下运行,因此不能使用指针。当玩家输球时将显示高分菜单。 这是我的代码 我努力了 但仍然没有专注于我的。 如何聚焦呢? 问题答案: 如果希望在GUI显示时集中精力,可以使用以下方法: 哪里会是你和你的。

  • 问题内容: 我使用Java中的Swing创建了一种表单。在表单中,我使用了一个文本字段,每当我按下该键时都必须在该文本字段上设置焦点。如何在Java中的特定组件上设置焦点? 问题答案: 请问给你你需要什么?

  • 是否可以将焦点从更改为? 我尝试了以下方法: 但它不起作用。按Tab键或Enter键时,光标消失。

  • 我有一个EditText-Field,并为它设置了一个OnFocusChangeListener。当它失去焦点时,将调用一个方法,该方法用数据库中的EditText检查EditText的值。如果方法的return-value为true,则显示一个toast并且焦点应该再次回到EditText上。焦点应该总是回到EditText上,键盘应该显示,直到方法的return-value为false。 ed

  • 如何在Elm中设置Html元素的焦点?我试图在元素上设置自动聚焦属性,它只在页面加载上设置焦点。

  • 问题内容: 我想将焦点放在作为对象消息传递给JOptionPane的特定JTextField上。这是我的代码(我希望焦点在txt2上,但焦点始终在txt1上): 问题答案: 一旦覆盖,您可以让组件请求焦点。像这样: 这是程序的完整功能/经过测试的版本: