鉴于我有一个包含在JScrollPane中的JTextArea,以及一个充满JScrollPanes的Hashmap:
protected static JTextArea jta1 = new JTextArea();
protected static JScrollPane jts1 = new JScrollPane(jta1, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
public static Hashtable<Integer, JScrollPane> textAreas = new Hashtable<Integer, JScrollPane>();
textAreas.put(1, jts1);
如何在一个只包含JScrollPanes的hashmap中,在同一个for
循环中设置内部JTextArea和外部JScrollPane的样式?:
for (JScrollPane item : textAreas.values()) {
item.setPreferredSize(new Dimension(540, 200)); // This is JScrollPane
item.setLineWrap(true); // This is the JTextArea attribute <----
item.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Settings.SITE_ORANGE)); // This is JScrollPane
}
我对JTextarea包含的外部JScrollPane没有问题,但是item.setLineWrap(true)
特别适用于内部JTextArea,那么我该如何选择呢?
您无法从JTextArea ((JTextArea) item).setLineWrap(true);
投射,先尝试过。
答案 0 :(得分:2)
你必须在JScrollPane上使用getViewport()方法访问视口,然后在返回的JViewport上调用getView()方法,返回的Component应该是你的JTextArea,你需要将组件转换为JTextArea才能调用setLineWrap在它上面
((JTextArea)item.getViewport()。getView())。setLineWrap(true)