【问题标题】:How to add JTextField to JPanel into specific position by using variable如何使用变量将 JTextField 添加到 JPanel 到特定位置
【发布时间】:2015-10-16 01:43:38
【问题描述】:

当用户单击添加按钮时,我需要将该行及其组件附加到 JPanel 中。所以我想通过将 JTextField 组件放置到特定位置来将它们添加到 JPanel 中。

由于列总是相同的数字,我只需要增加行号。所以这是我目前尝试的代码。

int startRow = 3;
int row = startRow + 2;

textField_1 = new JTextField();
panel_1.add(textField_1, "3, row");//having error in this line
textField_1.setColumns(10); 

startRow = row; 

我在上面的特定行有错误。似乎 Eclipse 没有将行读取为整数。

【问题讨论】:

  • “我只需要增加行号。” 似乎这种布局需要更像GridBagLayout 的东西。有关详细信息和示例,请参阅How to Use GridBagLayout
  • 1) 总是复制/粘贴错误和异常输出! 2) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。 3) 以最小尺寸提供 ASCII 艺术或 GUI 的预期布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。

标签: java swing jpanel components jtextfield


【解决方案1】:

我认为您对 Java 世界还很陌生。

首先,将出现错误的行改为:

panel_1.add(textField_1);

.add() 只需要 1 个参数(据您目前需要知道的),并且您必须在添加后定位组件。这是使用布局管理器完成的。

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

我建议您阅读那篇文章,并查看一些演示。我希望这会有所帮助。

在旁注中,我会为您的组件使用更好的名称,以便更容易找到它们。目前它不是很重要,但是当你制作更大的应用程序时,你会非常依赖 IDE 的自动完成功能,这有助于了解调用的内容。从组件类型的缩写版本开始往往是一个好主意,然后是它的用途 - 如果您有一个退出按钮,请调用它btnExit

【讨论】:

    【解决方案2】:
    textField_1 = new JTextField();
    textField_1.setColumns(10); 
    panel_1.add(textField_1);
    

    如果您使用默认布局.add() 只需要1 个参数,如果您使用GridBagLayoutBorderLayout 那么.add()tahe 2 参数一个是组件,另一个是位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2018-04-18
      • 2010-10-07
      • 2013-06-05
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      相关资源
      最近更新 更多