package ui; import dao.ResultDAO; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSeparator; import model.Criterion; public class CategoryPanel extends JPanel { public CategoryPanel(String category, List<Criterion> criteria) { this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); JLabel categoryHeading = new JLabel(category); Font headingFont = categoryHeading.getFont(); headingFont = headingFont.deriveFont(Font.BOLD, (float) headingFont.getSize() + 3); categoryHeading.setFont(headingFont); // wrapping the heading label in a panel to force the box layout to make it full width JPanel headerPnl = new JPanel(new BorderLayout()); headerPnl.add(categoryHeading, BorderLayout.CENTER); this.add(headerPnl); // add a some vertical padding this.add(Box.createVerticalStrut(5)); ResultDAO dao = new ResultDAO(); for (Criterion criterion : criteria) { CriterionPanel criterionEditor = new CriterionPanel(criterion); this.add(criterionEditor); this.add(Box.createVerticalStrut(15)); dao.addEditor(criterion, criterionEditor); } // add a horizontal line for seperating categories JSeparator sep = new JSeparator(); sep.setBorder(BorderFactory.createLineBorder(Color.BLACK)); this.add(sep); this.add(Box.createHorizontalStrut(5)); } }