最近帮忙做了一个java swing 的 项目。做到一半,我 突然有一种 为什么要用swing 不用 web 的自问。继续写吧。把遇到了的一些小细节记录一下,以后可能用得着也可能都不会用了。
JButton 设置 文本与边框的 距离
默认 按钮与边缘是有一定距离的,当需要设置比较小的按钮时,就显示不出文字了,
所以需要设置JButton.setMargin(new Insets(0, 0, 0, 0)); 这样就可以把按钮设置的很小,文字也全部显示出来
JTextField 只能输入特定的文字,数字,字母
如果需要只输入特定的 类型,例如 只能输入数字 则可以 重写他的Document 来实现。
JTextField.setDocument(new PlainDocument() {
private static final long serialVersionUID = 1L;
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (str == null) {
return;
}
// 匹配数字,如果需要匹配其他的,可以自行设置。
if (!str.matches("[0-9]*")) {
return;
}
super.insertString(offs, str, a);
}
});
MySQL查询模糊查询按照 匹配度 排序
替换后的长度 / 原来数据的长度 = 得到数据比例
select `name`,length(`pinyin`) as p ,length(`name`) as n ,
(length(replace(`pinyin`,'测试','')) / length(`pinyin`)) as n1,
(length(replace(`name`,'测试','')) / length(`name`)) as n2,
(
length(replace(`pinyin`,'测试','')) / length(`pinyin`) +
length(replace(`name`,'测试','')) / length(`name`)
) as ln
from stock
where `pinyin` like '%测试%' or `name` like '%测试%'
order by ln limit 2;
JScrollPane 滚动无法滚动或者滚动不好用
检查一下 控件 是否存在 多层 JScrollPane 嵌套。删除一些 非必要的 JScrollPane 。滚动较慢 可以使用 myJScrollPane.getVerticalScrollBar().setUnitIncrement(20); 来提升速度
自定义List
使用 JPanel GridBagLayout GridBagConstraints 使用 ArrayList 来记录数据。