[英]Swing: How could I use JTree with JTextPanes as nodes?
JTree
使用DefaultTreeCellRenderer
作為單元格渲染器。
該類是JLabel
的子類。
我想使用比JLabel
更復雜的元素的JTree
,例如JTextPane
。
問題是:我不能將DefaultTreeCellRenderer
子類化,因為它仍然是JLabel
。
編寫自己的TreeCellRenderer
太復雜了。
為什么? 因為: DefaultTreeCellRenderer
有17個字段,並且不僅僅是實現TreeCellRenderer
的getTreeCellRendererComponent(...)
。
你能設計出什么簡單的解決方案?
我需要樹元素是JTextPane
才能執行復雜的格式化。
public class JTextPaneTreeCellRenderer extends JTextPane implements TreeCellRenderer {
方法:
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
// do stuff to this instance of JTextPane
setEditable(selected);
setText(value.toString()); //Assumes whatever you stuck in the tree has pretty toString
if (leaf)
setBackgroundColor(Color.RED);
return this;
}
您不需要像默認實現那樣復雜。 使Renedere成為JTextPane
的子類將使該方法的實現更加容易。
您仍然可以getTreeCellRendererComponent
DefaultTreeCellRenderer的子類,並僅覆蓋getTreeCellRendererComponent
方法,以返回按您希望的格式化的JTextPane
組件。 你仍然需要做很多DefaultTreeCellRenderer在其實現中所做的事情,但你不必為這17個左右的字段的維護方面而煩惱。
編輯在閱讀注釋后刪除了JTextField編輯器解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.