如何找到边框为“标题边框”的文本框的标题?

时间:2014-05-05 21:59:44

标签: java border

我可以轻松地为JTextField c设置标题边框的标题。

   c.setBorder(BorderFactory.createTitledBorder(title));

文档说使用getTitle()来查找标题的内容,但我找不到任何看似自然的示例或工作组合。以下都不会编译:

   c.getBorder().getTitle();

   c.getTitle();

   Border b = null;
...
   b = BorderFactory.createTitledBorder(new LineBorder(BLACK, 2),title);
   c.setBorder(b);
   b = c.getBorder();
   b.getTitle();

如何获取边框类型为JTextField的{​​{1}}标题的字符串内容?

3 个答案:

答案 0 :(得分:1)

边框类型不是createTitledBorder。这只是您正在使用的静态工厂方法的名称。它返回TitledBorder。在JTextField上调用getBorder()只会返回Border类型的边框,该边框没有getTitle()方法,因为并非所有边框都有标题。

您需要引用TitledBorder类型的边框,以便Java知道边框有标题:

TitledBorder b = null;
...
b = BorderFactory.createTitledBorder(new LineBorder(BLACK, 2),title);
c.setBorder(b);
b = (TitledBorder)c.getBorder();
b.getTitle();

或者,如果您不想保留TitledBorder类型的引用,则可以执行以下操作:

Border b = null;
...
b = BorderFactory.createTitledBorder(new LineBorder(BLACK, 2),title);
c.setBorder(b);
b = c.getBorder();
( (TitledBorder)b ).getTitle();

修改
这是一种不那么冗长的方式来做你在所发布的答案中所做的事情:

Border b;
String title;

b = c.getBorder();
if(b instanceof TitledBorder)
{
    title = ( (TitledBorder)b ).getTitle();
}

答案 1 :(得分:1)

尝试类似

的内容
TitledBorder border = BorderFactory.createTitledBorder("Title");
c.setBorder(border);

然后,您可以使用类似

的方法调用getTitle方法
System.out.println(border.getTitle());

答案 2 :(得分:0)

这有效:

Border b;
TitledBorder tb;
String title;

    b = c.getBorder();
    if(b instanceof TitledBorder)
    {
      c.getBorder();
      tb = (TitledBorder)c.getBorder();
      title = tb.getTitle();
    }

无论c有哪种类型的边框, IF TitledBorder,我都会获得广告标题。如果没有,请照常进行。

谢谢,gla3dr,提示。

有没有人看到完成任务的冗长方式?