-1

好吧,我正在尝试创建一个从扫描仪获取 System.in 的程序,将输入放在一个字符串中,然后根据输入创建一个按钮布局。我对 Java 很陌生,而且有点自学,所以如果这看起来很时髦,那是因为我不是专业人士:

else if(wordReader.endsWith("\r")){

//Create grid layout (one below other)
GridLayout buttonReturn = new GridLayout(0,i);
contentPane.setLayout(buttonReturn);
System.out.println("This has a new line value");
i++;

    wordReader.replaceAll("\r","");
    buttonVal = new JButton (wordReader);
    buttonVal.addActionListener(new ButtonListener());
    buttonVal.setEnabled(true);

    contentPane.add(buttonVal, BorderLayout.NORTH);
Border emptyBorder = BorderFactory.createEmptyBorder();
buttonVal.setBorder(emptyBorder);
}

else {

    //Create button layout(side by side)
    FlowLayout buttonLayout = new FlowLayout();
    contentPane.setLayout(buttonLayout);
    contentPane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

    buttonVal = new JButton (wordReader);
    buttonVal.addActionListener(new ButtonListener());
    buttonVal.setEnabled(true);
    contentPane.add(buttonVal, BorderLayout.NORTH);
    Border emptyBorder = BorderFactory.createEmptyBorder();
    buttonVal.setBorder(emptyBorder);
}

我的问题:我想做的是为每个单词创建一个按钮,但以类似于纸张格式的格式显示这些按钮。也就是说,当一个人按下回车键时,我不再需要 FlowLayout(并排),而是想现在将下一个按钮与回车键移到前一个按钮下方。这可能吗?我试图从 FlowLayout 转到 GridLayout 以移动下面的下一个按钮,但是从阅读中我什至不确定这是可能的。有没有办法做到这一点?

有没有一种方法可以检测回车按钮而不在控制台中执行,现在我让他们在输入中输入 \r 作为回车而不是按回车键?

我浏览了许多说明、文章、论坛和问答帖子(包括在本网站上),但似乎找不到任何可以让我做我想做的事的东西。稍后我将这样做是为了从文件而不是 System.in 中读取,所以如果这更容易解释,那么请随意尝试:) 同样我在这方面很新,而且几乎没有接受过正规培训,所以很愚蠢行话下来将不胜感激。非常感谢大家。

4

1 回答 1

2

您可能会查看JTextPane,它支持嵌入式组件。不是文字网格布局,而是StyledDocument维护概念文档布局。示例可以在如何使用编辑器窗格和文本窗格中找到。可以在此处找到其他示例。

于 2011-10-30T00:29:50.730 回答