簡體   English   中英

JTable單元格文本顏色更改

[英]JTable cell text color changing

我對Java和編程本身還是比較陌生,所以請原諒我這個問題。 我正在嘗試執行以下操作:

我正在做一個簿記程序。 我希望在顯示收入/結果的列上輸入,以便當用戶輸入一個負數 (例如-1.150€)時,該數字變為紅色(或實際上是任何顏色,但紅色是大多數簿記程序使用的顏色)。 僅該列上的特定單元格。 我尚未開始編寫代碼,因此無法在此處輸入代碼。 我也不需要將其右對齊,因為我已經這樣做了。

PS。 抱歉,如果該帖子/問題已經存在,我進行了搜索,但沒有找到任何可以幫助我的東西。

一個在單列中包含雙值的小示例。 此版本將JTable.setDefaultRenderer用於Double.class

您還可以設置顏色

import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;

@SuppressWarnings("serial")
public class TableWithColors {
    protected static JTable createTable() {
        Object[][] rows = new Object[][] {{1.23d},{-20.5d},{5.87d},{2.23d},{-7.8d},{-8.99d},{9d},{16.25d},{4.23d},{-26.22d},{-14.14d}};
        Object[] cols = new Object[]{"Balance"};
        JTable t = new JTable(rows,cols) {
            @Override
            public Class<?> getColumnClass(int column) {
                if(convertColumnIndexToModel(column)==0) return Double.class;
                return super.getColumnClass(column);
            }
        };
        t.setDefaultRenderer(Double.class, new DefaultTableCellRenderer(){
            @Override
            public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) {
                Component c = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
                c.setForeground(((Double) value)>0 ? Color.BLUE : Color.RED);
                return c;
            }
        });
        return t;
    }

    private static JFrame createFrame() {
        JFrame f = new JFrame("Table with colors");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new BorderLayout());
        f.add(new JScrollPane(createTable()),BorderLayout.CENTER);
        f.setSize(new Dimension(60,255));
        return f;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createFrame().setVisible(true);
            }
        });
    }
}

像這樣:

將余額從負更改為正,反之亦然

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM