我可以轻松地为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}}标题的字符串内容?
答案 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,提示。
有没有人看到完成任务的冗长方式?