小编Met*_*ing的帖子

填充数字为0时,"IllegalFormatConversionException:d!= java.lang.String"?

昨天我有一个完美的代码,完全符合以下形式:

int lastRecord = 1;
String key = String.format("%08d", Integer.toString(lastRecord));
Run Code Online (Sandbox Code Playgroud)

哪个会很好地填充到00000001.

现在我把它踢了一个缺口,两个KeyChar从一个表中获取一个字符串,而lastRecord从一个表中获取一个int.

正如您所看到的,概念本质上是相同的 - 我将int转换为字符串并尝试用0填充它; 但是,这次我收到以下错误:

java.util.IllegalFormatConversionException: d != java.lang.String
Run Code Online (Sandbox Code Playgroud)

代码如下:

String newPK = null;
String twoCharKey = getTwoCharKey(tablename);
if (twoCharKey != null) {
     int lastRecord = getLastRecord(tablename);
     lastRecord++;
     //The println below outputs the correct values: "RU" and 11. 
     System.out.println("twocharkey:"+twoCharKey+"record:"+lastRecord+"<");
     //Now just to make it RU00000011
     newPK = String.format("%08d", Integer.toString(lastRecord));
     newPK = twoCharKey.concat(newPK);
}
Run Code Online (Sandbox Code Playgroud)

我觉得我必须输入错误的东西,因为自上次工作以来没有理由让它破裂.任何帮助/提示表示赞赏!谢谢!

java regex string-formatting

10
推荐指数
1
解决办法
4万
查看次数

动态设置List <type>

我以前只使用反射来做动态获取类和设置字段值的事情.我的Google搜索向我展示了我还可以使用反射进行动态类型转换?

我的代码如下:

import entity.Shipvia;
import entity.Route;
import java.lang.reflect.Field;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;

public class RetrieveResultList {

    public static List retrieveResultList(String tablename) {
        EntityManager entityManager = Persistence.createEntityManagerFactory("EntityLibraryPU").createEntityManager();
        Query query = entityManager.createNamedQuery(tablename + ".findAll");
        List<Shipvia> resultList = query.getResultList();
        return resultList;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此方法动态检索数据库表中的结果.因为表名总是不同的,所以我不能拥有List,因为每个表都不同.

我如何将我传入的tablename字符串转换为List的类型?

java reflection casting list

5
推荐指数
1
解决办法
8110
查看次数

将键组合绑定到JFrame

到目前为止,我已经使用ESC键关闭窗口,使用以下代码:

KeyStroke escapeKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
    Action escapeAction = new AbstractAction() {
         public void actionPerformed(ActionEvent e) {
            screen.dispose();
         }
    };
screen.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeKeyStroke, "ESCAPE");
screen.getRootPane().getActionMap().put("ESCAPE", escapeAction);
Run Code Online (Sandbox Code Playgroud)

但我想知道如何添加CTRL + A事件?我记得读过你为keypressed/release设置布尔值的方法,但是我没有看到使用这段代码,所以我想知道如何实现CTRL + A.

谢谢

java swing action keyboard-shortcuts keystroke

3
推荐指数
1
解决办法
3702
查看次数

textFields上的无限焦点循环

我有2个JTextFields:

JTextField txtJobType, txtPriorityCode;
Run Code Online (Sandbox Code Playgroud)

这是我需要的功能:

当用户在txtJobType中键入"管理"并点击选项卡(或点击远离)时,将执行错误检查以查看该字段是否为空或输入的文本是否存在于数据库中.我这样做的方式是:

private void txtJobTypeFocusLost(java.awt.event.FocusEvent evt) {                                     
    System.out.println("JobType Focus Lost");
    if (!checkFieldExists(txtJobType.getText(), "jobType", "jobCode",
            JobType.class) || txtJobType.getText().isEmpty()) {
        txtJobType.requestFocusInWindow();
        txtJobType.selectAll();
    } else {
    }
} 
Run Code Online (Sandbox Code Playgroud)

因此,如果该字段不存在或文本为空,则将焦点返回到txtJobType并突出显示所有文本(如果有)

这没有问题.但是,我有txtPriorityCode字段需要具有完全相同的行为.所以我做了:

private void txtPriorityCodeFocusLost(java.awt.event.FocusEvent evt) {                                          
    System.out.println("PriorityCode Focus Lost");
    if (!checkFieldExists(txtPriorityCode.getText(), "priority", "priorityCode",
            Priority.class) || txtPriorityCode.getText().isEmpty()) {
        txtPriorityCode.requestFocusInWindow();
        txtPriorityCode.selectAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是问题开始的地方:如果用户将jobType和制表符保留为优先级,则代码会尝试将焦点返回到jobtype,但由于此时优先级也为空,它将尝试从jobtype返回焦点,从而产生此输出:

PriorityCode Focus Lost
JobType Focus Lost
PriorityCode Focus Lost
JobType Focus Lost
Run Code Online (Sandbox Code Playgroud)

任何有关如何实现此行为的帮助表示赞赏,因为我必须为至少10个其他文本字段执行此操作.

谢谢!

java swing focus error-checking infinite-loop

1
推荐指数
1
解决办法
530
查看次数