小编Bil*_*bug的帖子

Java,GUI构建器还是手工编码?

我的公司软件有很多形式,到现在为止我们手工编写代码(MVC方式).

我们正在考虑开始使用GUI构建器.

使用Builder时几乎没有问题.

  1. 部分代码 不可读.
  2. 部分代码不可 编辑.
  3. 以后编辑代码会更难.
  4. 我们将来必须继续使用该构建器,即使我们想要替换构建器或手工编写,也没有人能够确保该工具将来可用和支持.

我想向他人学习经验:

  • 您是否建议使用工具或我们是否应继续手动编写代码?
  • 哪个建筑商更好?
  • 他是如何处理这些问题的?(还有其他问题吗?)

java forms user-interface

27
推荐指数
5
解决办法
2万
查看次数

如何限制 JTextArea 最大行数和列数?

我在 JScrollPane 中使用 JTextArea

我想限制可能的最大行数和每行中的最大字符数。

我需要字符串与屏幕上的完全一样,每一行都以 '\n' 结尾(如果后面还有另一行),并且用户将只能在每行中插入 X 行和 Y 字符。

我试图限制行,但由于换行,我不知道到底有多少行,换行是在屏幕上直观地开始新行(因为 JTextArea 的宽度),但在字符串中组件实际上是同一行,没有 '\n' 表示新行。我不知道如何在打字时限制每行中的最大字符数。

有2个阶段:

  1. 字符串的输入 - 保持用户将无法在每行中输入超过 X 行和 Y 个字符。(即使换行仅可视化或用户输入了“/n”)
  2. 将字符串插入到 DB- 单击“确定”后,即使用户没有输入它并且该行仅在视觉上被换行,也可以转换每行将以“/n”结尾的字符串。

如果我计算行中的字符数并在行尾插入 '/n' 几乎没有问题,这就是我决定分两个阶段进行的原因。在第一阶段 ehile 用户正在输入我宁愿只限制它的视觉和强制换行或类似的东西。只有在第二阶段,当我保存字符串时,我才会添加 '/n',即使用户没有在行尾输入它!

有没有人有想法?


我知道我将不得不使用 DocumentFilter 或 StyledDocument。

这是仅将行限制为 3 的示例代码:(但不将行中的字符限制为 19)

private JTextArea textArea ;
textArea  = new JTextArea(3,19);
textArea  .setLineWrap(true);
textArea .setDocument(new LimitedStyledDocument(3));
JScrollPane scrollPane  = new JScrollPane(textArea

public class LimitedStyledDocument extends DefaultStyledDocument

    /** Field maxCharacters */
    int maxLines;

    public LimitedStyledDocument(int maxLines) {
        maxCharacters = maxLines;
    } …
Run Code Online (Sandbox Code Playgroud)

java text lines limit jtextarea

6
推荐指数
1
解决办法
2万
查看次数

如何用空行对java JTable进行排序并强制空行总是最后?

我正在使用JTable,在表格底部有一个空行,以便能够在表格中添加新行.

在空行中插入或写入数据后,我自动添加一个新的空行.(它假设像Microsoft视觉表一样)

我正在使用java默认行排序器,

问题是我需要空行一直是最后一行!但在对表格进行排序后,它将成为第一行.

DefaultRowSorter类的" compare(int model1,int model2) "方法获取2个行号,如果第一行的值为null,则返回-1,如果第二行的值为null,则返回1.并且通过-1进行DESCENDING以获得反转顺序.

            //Treat nulls as < then non-null
            if (v1 == null) {
                if (v2 == null) {
                    result = 0;
                } else {
                    result = -1;
                }
            } else if (v2 == null) {
                result = 1;
            } else {
                result = sortComparators[counter].compare(v1, v2);
            }
            if (sortOrder == SortOrder.DESCENDING) {
                result *= -1;
            }
Run Code Online (Sandbox Code Playgroud)

空行被排序为最小值,并且DESCENDING将是第一行(因为mult乘以-1)并且导致很多问题.

我可以覆盖它,并且在DESCENDING模式下,空行(通常是最后一行)不会多次-1,它将是任何排序后的最后一行.但问题是" compare "方法和它的调用者" Row "内部类在DefaultRowSorter中是私有的.

有没有办法避免排空空行并使其始终排在最后一行?

java sorting swing jtable

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

标签 统计

java ×3

forms ×1

jtable ×1

jtextarea ×1

limit ×1

lines ×1

sorting ×1

swing ×1

text ×1

user-interface ×1