3434import org .scijava .task .Task ;
3535import org .scijava .task .event .TaskEvent ;
3636
37- import javax .swing .Icon ;
3837import javax .swing .JComponent ;
3938import javax .swing .JFrame ;
4039import javax .swing .JLabel ;
4443import javax .swing .JScrollPane ;
4544import javax .swing .JTable ;
4645import javax .swing .SwingConstants ;
47- import javax .swing .UIManager ;
4846import javax .swing .border .EmptyBorder ;
4947import javax .swing .plaf .basic .BasicProgressBarUI ;
5048import javax .swing .table .AbstractTableModel ;
@@ -148,6 +146,8 @@ public class SwingTaskMonitorComponent {
148146 */
149147 private double globalProgression = 0 ;
150148
149+ private boolean rowHeightInitialized = false ;
150+
151151 /**
152152 * Constructs a Swing Task Monitor component - clickable circular progress bar
153153 * the component can be accessed with
@@ -208,7 +208,6 @@ public void mouseClicked(MouseEvent e) {
208208 taskTable .setShowGrid (false );
209209 taskTable .setIntercellSpacing (new Dimension (0 , 0 ));
210210 taskTable .setTableHeader (null ); // no header
211- taskTable .setRowHeight (65 );
212211 taskTable .setRowMargin (2 );
213212 taskTable .setDefaultRenderer (Task .class , new TaskRenderer (false ));
214213 // restrict size of second column to the size of the stop icon
@@ -265,6 +264,12 @@ private void onEvent(final TaskEvent evt) {
265264 } else {
266265 taskTableModel .addOrUpdate (task );
267266 }
267+ if (!rowHeightInitialized ) {
268+ rowHeightInitialized = true ;
269+ TableCellRenderer renderer = taskTable .getDefaultRenderer (Task .class );
270+ Component c = renderer .getTableCellRendererComponent (taskTable , task , false , false , 0 , 0 );
271+ taskTable .setRowHeight (c .getPreferredSize ().height + taskTable .getRowMargin ());
272+ }
268273 // globalProgression has been updated during taskTableModel update
269274 globalProgressBar .setValue ((int )(globalProgression *100 ));
270275 }
@@ -483,8 +488,7 @@ class TaskRenderer implements TableCellRenderer {
483488 JLabel labelTop = new JLabel (); // top label : task name and status
484489 JProgressBar progressBar = new JProgressBar (); // standard linear progress bar
485490 JLabel labelBottom = new JLabel (); // bottom label : task completion, and optionally time left
486- Icon errorIcon = UIManager .getIcon ("OptionPane.errorIcon" ); // icon for canceling task
487- JLabel cancelTask ; // container for errorIcon
491+ JLabel cancelTask ; // cancel icon
488492
489493 public TaskRenderer (boolean isBordered ) {
490494 labelTop .setVerticalTextPosition (SwingConstants .TOP );
@@ -497,9 +501,8 @@ public TaskRenderer(boolean isBordered) {
497501 cell .add (labelTop ,"height ::14, span" );
498502 cell .add (progressBar ,"height ::3, span" );
499503 cell .add (labelBottom , "height ::14" );
500- cancelTask = new JLabel (errorIcon , SwingConstants .CENTER );
504+ cancelTask = new JLabel (" \u2715 " , SwingConstants .CENTER );
501505 cancelTask .setOpaque (true );
502- cancelTask .setBackground (cell .getBackground ());
503506 }
504507
505508 @ Override
@@ -513,6 +516,7 @@ public Component getTableCellRendererComponent(
513516 labelTop .setForeground (table .getForeground ());
514517 labelBottom .setForeground (table .getForeground ());
515518 cancelTask .setBackground (table .getBackground ());
519+ cancelTask .setForeground (table .getForeground ());
516520 if (column ==1 ) {
517521 return cancelTask ; // second column : stop icon
518522 }
0 commit comments