如何根据其值更改一行中的文本颜色? [重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

import java.awt.*;
       import java.util.ArrayList;
      import java.util.Collection;
        import java.util.HashMap;
       import java.util.TreeSet;

        import javax.swing.*;
       import javax.swing.table.JTableHeader;
       import javax.swing.table.TableColumn;

   class Result extends JFrame {

    HashMap hm;

    JLabel marks=new JLabel();

    Result(){

        hm=Quiz.hm;
        marks.setText("YOU SCORED "+Quiz.score+" MARKS");

        marks.setFont(new Font("Times New Roman",Font.BOLD,30));

        setLayout(new BorderLayout());
        String[] columnNames = {"Qno","Question","Submitted Answer","Correct Answer","status"};

         int rows=hm.size();

         String[][] result=new String[rows][5];

         //Collection c=hm.values();

        ArrayList al=new ArrayList(hm.values());


        JTable table = new JTable(result,columnNames);
        JTableHeader header=table.getTableHeader();
                header.setBackground(Color.BLACK);
                header.setForeground(Color.WHITE);


         for(int i=0;i<rows;i++)
           {
               Question s1=(Question)al.get(i);

                    for(int j=0;j<5;j++)
                 {

                   if(j==0)
                       result[i][j]=s1.getQueNo()+"";
                   if(j==1)
                        result[i][j]=s1.getQuestion();
                   if(j==2)
                        result[i][j]=s1.getSubmitted();
                   if(j==3)
                       result[i][j]=s1.getAnswer();
                   if(j==4 && s1.getSubmitted().equals(s1.getAnswer())) {
                        result[i][j]="Right Answer";

                    }
                   if(j==4 && !(s1.getSubmitted().equals(s1.getAnswer()))){
                       result[i][j]="Wrong Answer".toUpperCase() ;

                   }
                 }
           }


         table.disable();


         String name= table.getColumnName(4);

            TableColumn column = null;
            for (int i = 0; i < 5; i++) {
                column = table.getColumnModel().getColumn(i);
                if(i==0)
                {
                    column.setPreferredWidth(5);
                }
                if(i==1)
                {
                    column.setPreferredWidth(200);
                }
                if(i==2)
                {
                    column.setPreferredWidth(50);
                }
                if(i==3)
                {
                    column.setPreferredWidth(50);
                }
                if(i==4)
                {
                    column.setPreferredWidth(50);
                }

            }    


           table.setRowHeight(table.getRowHeight() + 10);

            JScrollPane scrollPane = new JScrollPane(table);

              table.setFillsViewportHeight(true);



              add(scrollPane,BorderLayout.NORTH);
              add(marks,BorderLayout.SOUTH);
    }

    }

如果答案是REDWrong Answer,如果答案是Green,如何将单元格的文本颜色更改为Right Answer

if(j==4 && s1.getSubmitted().equals(s1.getAnswer())) {

  result[i][j]="Right Answer";

setForeground(Color.GREEN);                     
}

if(j==4 && !(s1.getSubmitted().equals(s1.getAnswer()))){

result[i][j]="Wrong Answer".toUpperCase() ;

setForeground(Color.GREEN);  

 }

这是我试过的......

java swing jtable awt
1个回答
0
投票

我认为你必须实施一个Table cell render。看看oracle的JTabel教程的Using Custom Renderers

我希望它有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.