- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 Java swing 应用程序。所以我有一个带有 JXTreeTable 的 JPanel。我可以在这个TreeTable中插入带有子节点的soma行,这样就可以了。
现在,如果我尝试运行我的应用程序,我可以看到:
这也可以。因此,现在如果我尝试扩展一个或多个节点,我可以看到这一点:
我想知道是否可以更改渲染(为 NODE 子项设置另一个背景或其他字体颜色。
这是我用来创建 JXTreeTable 的代码。
private void createTable(List<Entrate> v,String tipoConto){
tableCatEntrate = new CustomTreeTableEntrate(v,tipoConto);
daiProprietaJTableCatEntrate();
jscrollPaneCatEntrate.setViewportView(tableCatEntrate);
}
这是 CustomTreeTableEntralte 类:
public class CustomTreeTableEntrate extends JXTreeTable{
public CustomTreeTableEntrate(List<Entrate> listaConti,String tipoConto){
setTreeTableModel(new RandomTextTreeTableModel(listaConti,tipoConto));
setRowSelectionAllowed(false);
this.setDefaultRenderer(Object.class, new CustomTreeTableSpeseXCategoriaSpese());
}
class RandomTextTreeTableModel extends DefaultTreeTableModel {
public final NumberFormat decimalFormatter2 = new DecimalFormat("#,##0.00");
DefaultMutableTreeTableNode Root = null;
final String[] ColName = {"","Acquisti/Vendite","Uscite","Entrate","Saldo"};
//public LinkedHashMap<String, Entrate> mappaConti = new LinkedHashMap<String, Entrate>();
String tipoConto;
RandomTextTreeTableModel(List<Entrate>listaConti,String tipoConto) {
Root = new DefaultMutableTreeTableNode();
this.setRoot(Root);
for (Entrate conti : listaConti) {
DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode(conti);
Root.add(node);
if(conti.getListaContiFigli()!=null){
for (Entrate contoFiglio : conti.getListaContiFigli()) {
node.add(new DefaultMutableTreeTableNode(contoFiglio));
mappaConti.put(contoFiglio.getDescrizione(), contoFiglio);
}
}
contoTotale.setTotale(conti.getTotale()+contoTotale.getTotale());
contoTotale.setTotalePubblico(conti.getTotalePubblico()+contoTotale.getTotalePubblico());
contoTotale.setEntrate(conti.getEntrate()+contoTotale.getEntrate());
contoTotale.setUscite(conti.getUscite()+contoTotale.getUscite());
}
DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode(contoTotale);
Root.add(node);
}
@Override
public Object getValueAt(Object arg0, int arg1) {
try{
if(arg1==0){
int numberElement = ((DefaultMutableTreeTableNode)arg0).getChildCount();
if(numberElement<=0)
return null;
//Conti c = (Conti)((DefaultMutableTreeTableNode)arg0).getChildAt(0).getUserObject();
return "";
}
Entrate c = (Entrate)((DefaultMutableTreeTableNode)arg0).getUserObject();
if(c==null)
return null;
if (arg1 == 0) {
return "";
}else if (arg1 == 1) {
return c.getDescrizione();
}else if (arg1 == 2) {
return decimalFormatter2.format(c.getUscite());
}else if (arg1 == 3) {
return decimalFormatter2.format(c.getEntrate());
}else if (arg1 == 4 && tipoConto!=null && tipoConto.equalsIgnoreCase(WFConst.TIPO_CONTO_DEFAULT_AMMINISTRAZIONE_PRIVATO)) {
return decimalFormatter2.format(c.getTotale());
}else if (arg1 == 4 && tipoConto!=null && tipoConto.equalsIgnoreCase(WFConst.TIPO_CONTO_DEFAULT_AMMINISTRAZIONE_PUBBLICO)) {
return decimalFormatter2.format(c.getTotalePubblico());
}
}catch(Exception e){
e.printStackTrace();
}
return arg0;
}
}
}
这是 TreeTableRenderer,我认为问题出在这个类中,因为如果我尝试执行调试,我无法进入 getTreeCellRendererComponent。
public class CustomTreeTableSpeseXCategoriaSpese extends JLabel implements TreeCellRenderer, TableCellRenderer {
/**
*
*/
DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
private static final long serialVersionUID = 4842418316518803090L;
private Font fontTotale = new Font("Verdana", Font.BOLD, 12);
private Font fontNegativo = new Font("Verdana", Font.BOLD, 12);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setOpaque(true);
if(column ==1){
setHorizontalAlignment(SwingConstants.LEFT);
}else{
setHorizontalAlignment(SwingConstants.RIGHT);
}
if (row== table.getRowCount()-1) {
setForeground(Color.BLACK);
setBackground( Color.RED );
setFont(fontTotale);
}else if(row != table.getRowCount() && column !=4){
setForeground( Color.BLACK );
setBackground(new Color(200, 200, 200));
setFont(UtilitySwing.getTableFont());
}else if(row != table.getRowCount()-1 && column ==4){
String valore = value.toString();
if(valore.startsWith("-")){
setForeground(Color.red);
setFont(fontNegativo);
}else{
setForeground(Color.blue);
setFont(fontNegativo);
}
}
setText(value != null ? value.toString() : "<null>");
return this;
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
setOpaque(true);
if(expanded){
setForeground(Color.PINK);
setBackground( Color.PINK );
setFont(fontTotale);
}
return this;
}
}
最佳答案
您已经在使用 TreeCellRenderer
,所以您已经很接近了。您需要做的就是访问模型(例如 DefaultTreeModel
)并使用 getPathToRoot()
来查看您在树中的深度,并相应地更改渲染器。
一个例子:
DefaultTreeCellRenderer defaultTreeCellRenderer = new DefaultTreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
setOpaque(true);
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
if (model.getPathToRoot((TreeNode) value).length > 2) {
//Do your rendering goodness here
} else if (expanded) {
setForeground(Color.PINK);
setBackground(Color.PINK);
setFont(fontTotale);
}
return this;
}
};
注意我做了一些假设,因此请根据您的需要进行更正。
DefaultTreeModel
TreeNode
此外,请查看 JavaDoc使用此功能以确保它是您所需要的。
关于java - 如何在JXTreeTable的子节点设置字体和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940724/
我正在阅读 java swing,但在理解它时遇到问题。 Color 是一个类吗? Color[] col= {Color.RED,Color.BLUE}; 这在java中是什么意思? 最佳答案 Is
我正在研究用 python 编写的 pacman 程序。其中一个模块是处理吃 bean 游戏的图形表示。这当然是一些主机颜色。列表如下: GHOST_COLORS = [] ## establishe
本网站:http://pamplonaenglishteacher.com 源代码在这里:https://github.com/Yorkshireman/pamplona_english_teache
我最近将我的手机更新为 Android Marshmallow 并在其上运行了我现有的应用程序,但注意到颜色行为有所不同:将更改应用到 View (可绘制)的背景时,共享相同背景的所有 View (引
所有 X11/w3c 颜色代码在 Android XML 资源文件格式中是什么样的? I know this looks a tad ridiculous as a question, but giv
试图让 ffmpeg 创建音频波形,同时能够控制图像大小、颜色和幅度。我已经尝试过这个(以及许多变体),但它只是返回无与伦比的 "。 ffmpeg -i input -filter_complex "
我很好奇你是否有一些关于 R 中颜色酿造的技巧,对于许多独特的颜色,以某种方式使图表仍然好看。 我需要大量独特的颜色(至少 24 种,可能需要更多,~50 种)用于堆叠区域图(所以不是热图,渐变色不起
我看到的许多 WPF 示例和示例似乎都有硬编码的颜色。这些指南 - http://msdn.microsoft.com/en-us/library/aa350483.aspx建议不要硬编码颜色。在构建
我想更改文件夹的默认蓝色 如何设置? 最佳答案 :hi Directory guifg=#FF0000 ctermfg=red 关于Vim NERDTree 颜色,我们在Stack Overflow上
是否有关于如何将任意字符串哈希为 RGB 颜色值的最佳实践?或者更一般地说:3 个字节。 你问:我什么时候需要这个?这对我来说并不重要,但想象一下任何 GitHub 上的那些管图 network pa
我正在尝试将默认颜色设置为自定义窗口小部件。 这是有问题的代码。 class ReusableCard extends StatelessWidget { ReusableCard({this.
import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.Ta
我有一个 less 文件来定义一堆颜色/颜色。每个类名都包含相关颜色的名称,例如 .colourOrange{..} 或 .colourBorderOrange{..} 或 navLeftButtOr
我有一个RelativeLayout,我需要一个黑色背景和一个位于其中间的小图像。我使用了这段代码: 其中@drawable/bottom_box_back是: 这样我就可以将图像居中了。但背
我需要设置 浅色 的 JPanel 背景,只是为了不覆盖文本(粗体黑色)。 此刻我有这个: import java.util.Random; .... private Random random =
我正在尝试制作一个自定义文本编辑器,可以更改特定键入单词的字体和颜色。如何更改使用光标突出显示的文本的字体和/或颜色? 我还没有尝试过突出显示部分。我尝试获取整个 hEdit(HWND) 区域并更改字
我想改变我整个应用程序的颜色。 在我的 AndroidManfiest.xml 中,我有正确的代码: 在 values 文件夹中,我有 app_theme.xml: @style/MyAc
是否可以使用 android 数据绑定(bind)从 xml 中引用颜色? 这很好用: android:textColor="@{inputValue == null ? 0xFFFBC02D : 0
有没有办法在 Android 应用程序中设置“空心”颜色? 我的意思是我想要一个带有某种背景的框,而文本实际上会导致背景透明。换句话说,如果整个 View 在蓝色背景上,文本将是蓝色的,如果它是红色的
我用CGContextStrokePath画在白色背景图片中的一条直线上,描边颜色为红色,alpha为1.0画线后,为什么点不是(255, 0, 0),而是(255, 96, 96)为什么不是纯红色?
我是一名优秀的程序员,十分优秀!