2014-02-14 2 views
0

Java를 사용하여 GridBagLayout을 사용하여 양식을 만듭니다. GUI는 JFrame에 추가되는 scrollPane 안에있는 JPanel 안에 있습니다.JScrollPane 채우기 위해 JPanel 크기 조정을 방지하는 방법

양식이 늘어나지 않도록 고정 된 크기의 GUI로 JPanel을 원하지만 사용자의 선호에 따라 JScrollPanel을 크기 조정할 수있게하고 싶습니다. (캔버스가 JPanel이되는 MS Paint와 비슷합니다.) 양식을 늘어 뜨리지 않게하려는 이유는 인쇄하기를 원하기 때문입니다. 인쇄 방식에서는 원하는 방식으로 인쇄합니다. 그러나 프레임이 이전 크기로 조정 된 경우 불투명하게 변경됩니다. 인쇄.

아마도 내 문제는 내가 인쇄하는 방법으로 해결하는 것이 더 좋지만 이전에는이 ​​수준의 인쇄물을 다루지 않았고 문제를 해결할 수있는 비슷한 질문을 찾을 수 없었습니다. 내가 할 방향은 "가난한 사람의 방법"일 수도 있지만 지금 당장은 나에게 의미있는 유일한 방법이다. 나는 초보 자바 프로그래머이다.

setSize(w, h) 
setPreferredSize() 

을 또는 어쩌면 C를 추가

FrontierMain.java

public class FrontierMain { 

public FrontierMain(){ 
    JFrame frame = new JFrame(); 
    frame.setTitle("Frontier Insulation Labor Record Tool"); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    LaborRecordPanel recordPanel = new LaborRecordPanel(); 
    frame.add(recordPanel.scrollPane); 
    frame.pack(); 
    frame.setVisible(true); 

} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable(){ 
     public void run(){ 
      FrontierMain fm = new FrontierMain(); 
     } 
    }); 

    System.out.println("Hello, World"); 
} 
} 

LaborRecordPanel.java는

public class LaborRecordPanel implements 
Printable, ActionListener { 

    private Color shade = new Color(201,201,201); // color for shaded cells 

    private JLabel dateSpace[] = new JLabel[7]; 
    private JLabel grandTotalSpace = new JLabel(); 
    private JLabel locAndDescSpace = new JLabel(); 
    private JLabel personnelSpace[] = new JLabel[10]; // empty cells 
    private JLabel calendarGridLines[] = new JLabel[300]; //empty labels for gridlines 

    private ImageIcon logoIcon = new ImageIcon("Images/fici_logo1.jpg"); 
    private JLabel logoLabel = new JLabel(logoIcon); 

    private JLabel authorizedBy = new JLabel("AUTHORIZED BY:"); 
    private JLabel toCertify = new JLabel("THIS IS TO CERTIFY THAT THE ABOVE LABOR HAS BEEN PERFORMED."); 

    private JLabel laborRecordNO = new JLabel("NO."); 
    private JLabel nameOfJob = new JLabel("NAME OF JOB:"); 
    private JLabel customerPO = new JLabel("CUSTOMER PO #:"); 
    private JLabel contractNO = new JLabel("CONTRACT NO."); 
    private JLabel weekEnding = new JLabel("WEEK ENDING"); 

    private JLabel personnelList = new JLabel("<html>LIST SUPERVISION &<br> CRAFT LABOR BELOW:</html>"); 
    private JLabel locAndDescriptionLabel = new JLabel("LOCATION AND DESCRIPTION:"); 

    private JLabel personnelTitle = new JLabel("TITLE"); 
    private JLabel supt = new JLabel("SUPT."); 
    private JLabel foreman = new JLabel("FOREMAN"); 
    private JLabel[] mechanic= new JLabel[8]; 

    private JLabel calendarTitle = new JLabel("NUMBER OF HOURS WORKED @ SITE"); 
    private JLabel dayHeading = new JLabel("DAY"); 
    private JLabel dateHeading = new JLabel("DATE"); 
    private JLabel[] ot2 = new JLabel[10]; 
    private JLabel[] ot1 = new JLabel[10]; 
    private JLabel[] st = new JLabel[10]; 

    private JLabel mon = new JLabel("MON"); 
    private JLabel tues = new JLabel("TUES"); 
    private JLabel wed = new JLabel("WED"); 
    private JLabel thur = new JLabel("THUR"); 
    private JLabel fri = new JLabel("FRI"); 
    private JLabel sat = new JLabel("SAT"); 
    private JLabel sun = new JLabel("SUN"); 

    private JLabel totalHours = new JLabel("<html>TOTAL<br> HOURS</html>"); 
    private JLabel ratePerHour = new JLabel("<html>RATE<br> PER<br> HOUR</html>"); 
    private JLabel totalAmount = new JLabel("<html>TOTAL<br> AMOUNT</html>"); 
    private JLabel grandTotal = new JLabel("TOTAL"); 

    JPanel rp = new JPanel(); 
    JScrollPane scrollPane = new JScrollPane(rp); 

    LaborRecordPanel(){ 

     rp.setPreferredSize(new Dimension(1295,1830)); 
     rp.setMinimumSize(new Dimension(1295,1830)); 
     rp.setMaximumSize(new Dimension(1295,1830)); 
     scrollPane.setPreferredSize(new Dimension(900,700)); 

     scrollPane.getVerticalScrollBar().setUnitIncrement(16); //increase the scroll speed 

     for (int i = 0; i <= 7; i++) mechanic[i] = new JLabel("MECHANIC"); // create mechanic labels 

     for (int i = 0; i <= 9; i++) //create labels for work time 
     { 
      ot2[i] = new JLabel("OT-2"); 
      ot1[i] = new JLabel("OT-1"); 
      st[i] = new JLabel("S.T."); 
     } 
     //create empty labels for gridlines 
     for (int i = 0; i <= 9; i++) personnelSpace[i] = new JLabel(); 
     for (int i = 0; i <= 6; i++) dateSpace[i] = new JLabel(); 
     for (int i = 0; i <= 299; i++) calendarGridLines[i] = new JLabel(); 

     GridBagLayout gridbag = new GridBagLayout(); 
     rp.setBackground(Color.WHITE); 
     rp.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     rp.setLayout(gridbag); 
     //gbc.insets = new Insets(5, 5, 5, 5); 

     //row 0//////////////////////////////////////////////////////////// 
     gbc.fill = GridBagConstraints.BOTH; 
     gbc.gridx = 10; 
     gbc.gridy = 0; 
     gbc.weightx = 1; 
     gbc.weighty = 1; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     laborRecordNO.setHorizontalAlignment(JLabel.CENTER); 
     laborRecordNO.setFont(new Font("Dialog", Font.PLAIN, 18)); 
     gridbag.setConstraints(laborRecordNO, gbc); 
     rp.add(laborRecordNO, gbc); 

     //row 1//////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 1; 
     gbc.gridwidth = 13; 
     gridbag.setConstraints(logoLabel, gbc); 
     rp.add(logoLabel, gbc); 

     //row 2//////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 2; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     nameOfJob.setFont(nameOfJob.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(nameOfJob, gbc); 
     rp.add(nameOfJob, gbc); 

     gbc.gridx = 6; 
     gbc.gridy = 2; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 3; 
     contractNO.setFont(contractNO.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(contractNO, gbc); 
     rp.add(contractNO, gbc); 

     //row 3//////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 3; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     customerPO.setFont(customerPO.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(customerPO, gbc); 
     rp.add(customerPO, gbc); 

     gbc.gridx = 6; 
     gbc.gridy = 3; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 3; 
     weekEnding.setFont(weekEnding.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(weekEnding, gbc); 
     rp.add(weekEnding, gbc); 

     //row 4//////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 4; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     personnelList.setHorizontalAlignment(JLabel.CENTER); 
     personnelList.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); 
     personnelList.setFont(personnelList.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(personnelList, gbc); 
     rp.add(personnelList, gbc); 

     gbc.gridx = 1; 
     gbc.gridy = 4; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     personnelTitle.setHorizontalAlignment(JLabel.CENTER); 
     personnelTitle.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.BLACK)); 
     personnelTitle.setFont(personnelTitle.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(personnelTitle, gbc); 
     rp.add(personnelTitle, gbc); 

     gbc.gridx = 2; 
     gbc.gridy = 4; 
     gbc.gridwidth = 8; 
     gbc.gridheight = 1; 
     calendarTitle.setHorizontalAlignment(JLabel.CENTER); 
     calendarTitle.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 0, Color.BLACK)); 
     calendarTitle.setFont(calendarTitle.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(calendarTitle, gbc); 
     rp.add(calendarTitle, gbc); 

     gbc.gridx = 10; 
     gbc.gridy = 4; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     totalHours.setHorizontalAlignment(JLabel.CENTER); 
     totalHours.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK)); 
     totalHours.setFont(totalHours.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(totalHours, gbc); 
     rp.add(totalHours, gbc); 

     gbc.gridx = 11; 
     gbc.gridy = 4; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     ratePerHour.setHorizontalAlignment(JLabel.CENTER); 
     ratePerHour.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.BLACK)); 
     ratePerHour.setFont(ratePerHour.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(ratePerHour, gbc); 
     rp.add(ratePerHour, gbc); 

     gbc.gridx = 12; 
     gbc.gridy = 4; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     totalAmount.setHorizontalAlignment(JLabel.CENTER); 
     totalAmount.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK)); 
     totalAmount.setFont(totalAmount.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(totalAmount, gbc); 
     rp.add(totalAmount, gbc); 

     //row 5////////////////////////////////////////////////////////////////// 
     gbc.gridx = 2; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     dayHeading.setHorizontalAlignment(JLabel.CENTER); 
     dayHeading.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     dayHeading.setFont(dayHeading.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(dayHeading, gbc); 
     rp.add(dayHeading, gbc); 

     gbc.gridx = 3; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     mon.setHorizontalAlignment(JLabel.CENTER); 
     mon.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     mon.setFont(mon.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(mon, gbc); 
     rp.add(mon, gbc); 

     gbc.gridx = 4; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     tues.setHorizontalAlignment(JLabel.CENTER); 
     tues.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     tues.setFont(tues.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(tues, gbc); 
     rp.add(tues, gbc); 

     gbc.gridx = 5; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     wed.setHorizontalAlignment(JLabel.CENTER); 
     wed.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     wed.setFont(wed.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(wed, gbc); 
     rp.add(wed, gbc); 

     gbc.gridx = 6; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     thur.setHorizontalAlignment(JLabel.CENTER); 
     thur.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     thur.setFont(thur.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(thur, gbc); 
     rp.add(thur, gbc); 

     gbc.gridx = 7; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     fri.setHorizontalAlignment(JLabel.CENTER); 
     fri.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     fri.setFont(fri.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(fri, gbc); 
     rp.add(fri, gbc); 

     gbc.gridx = 8; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     sat.setHorizontalAlignment(JLabel.CENTER); 
     sat.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     sat.setFont(sat.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(sat, gbc); 
     rp.add(sat, gbc); 

     gbc.gridx = 9; 
     gbc.gridy = 5; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     sun.setHorizontalAlignment(JLabel.CENTER); 
     sun.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     sun.setFont(sun.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(sun, gbc); 
     rp.add(sun, gbc); 

     //row 6////////////////////////////////////////////////////////////// 
     gbc.gridx = 2; 
     gbc.gridy = 6; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     dateHeading.setHorizontalAlignment(JLabel.CENTER); 
     dateHeading.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     dateHeading.setFont(dateHeading.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(dateHeading, gbc); 
     rp.add(dateHeading, gbc); 

     int dateSpaceIndex = 3; 
     boolean flip = true; 
     for (int k = 0; k <= 6; k++)//create gridlines for day area 
     { 
      gbc.gridx = dateSpaceIndex; 
      gbc.gridy = 6; 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      if(flip) dateSpace[k].setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
      else dateSpace[k].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      gridbag.setConstraints(dateSpace[k], gbc); 
      rp.add(dateSpace[k], gbc); 
      dateSpaceIndex++; 
      flip = !flip; 
     } 

     //row 7///////////////////////////////////////////////////////////// 
     gbc.gridx = 1; 
     gbc.gridy = 7; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     supt.setHorizontalAlignment(JLabel.CENTER); 
     supt.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     supt.setFont(supt.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(supt, gbc); 
     rp.add(supt, gbc); 

     //row 10/////////////////////////////////////////////////////////// 
     gbc.gridx = 1; 
     gbc.gridy = 10; 
     gbc.gridheight = 3; 
     gbc.gridwidth = 1; 
     foreman.setHorizontalAlignment(JLabel.CENTER); 
     foreman.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
     foreman.setFont(foreman.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(foreman, gbc); 
     rp.add(foreman, gbc); 

     //row 13-36 plus 7-12 time worked labels////////////////////////// 
     for (int r = 0; r <= 7; r++) 
     { 
      gbc.gridx = 1; 
      gbc.gridy = 13 + (3*r); 
      gbc.gridheight = 3; 
      gbc.gridwidth = 1; 
      mechanic[r].setHorizontalAlignment(JLabel.CENTER); 
      mechanic[r].setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
      mechanic[r].setFont(mechanic[r].getFont().deriveFont(18.0f)); 
      gridbag.setConstraints(mechanic[r], gbc); 
      rp.add(mechanic[r], gbc); 
     } 

     for (int c = 0; c <= 9; c++){ 
      gbc.gridx = 2; 
      gbc.gridy = 7 + (3*c); 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      ot2[c].setHorizontalAlignment(JLabel.CENTER); 
      ot2[c].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      ot2[c].setFont(ot2[c].getFont().deriveFont(18.0f)); 
      gridbag.setConstraints(ot2[c], gbc); 
      rp.add(ot2[c], gbc); 

      gbc.gridx = 2; 
      gbc.gridy = 8 + (3*c); 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      ot1[c].setHorizontalAlignment(JLabel.CENTER); 
      ot1[c].setOpaque(true); 
      ot1[c].setBackground(shade); 
      ot1[c].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      ot1[c].setFont(ot1[c].getFont().deriveFont(18.0f)); 
      gridbag.setConstraints(ot1[c], gbc); 
      rp.add(ot1[c], gbc); 

      gbc.gridx = 2; 
      gbc.gridy = 9 + (3*c); 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      st[c].setHorizontalAlignment(JLabel.CENTER); 
      st[c].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      st[c].setFont(st[c].getFont().deriveFont(18.0f)); 
      gridbag.setConstraints(st[c], gbc); 
      rp.add(st[c], gbc); 
     } 
     //row 37///////////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 37; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     locAndDescriptionLabel.setFont(locAndDescriptionLabel.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(locAndDescriptionLabel, gbc); 
     rp.add(locAndDescriptionLabel); 

     gbc.gridx = 11; 
     gbc.gridy = 37; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     grandTotal.setHorizontalAlignment(JLabel.CENTER); 
     grandTotal.setOpaque(true); 
     grandTotal.setBackground(Color.BLACK); 
     grandTotal.setForeground(Color.WHITE); 
     grandTotal.setBorder(BorderFactory.createLineBorder(Color.BLACK,1)); 
     grandTotal.setFont(grandTotal.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(grandTotal, gbc); 
     rp.add(grandTotal); 

     gbc.gridx = 12; 
     gbc.gridy = 37; 
     gbc.gridwidth = 1; 
     gbc.gridheight = 1; 
     grandTotalSpace.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
     gridbag.setConstraints(grandTotalSpace, gbc); 
     rp.add(grandTotalSpace); 

     //row 38//////////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 38; 
     gbc.gridwidth = 10; 
     gbc.gridheight = 1; 
     gbc.ipady = 80; 
     locAndDescSpace.setBorder(BorderFactory.createLineBorder(Color.BLACK,1)); 
     gridbag.setConstraints(locAndDescSpace, gbc); 
     rp.add(locAndDescSpace); 

     //row 39//////////////////////////////////////////////////////////////// 
     gbc.ipady = 0; //reset to default 
     gbc.gridx = 0; 
     gbc.gridy = 39; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 2; 
     toCertify.setFont(toCertify.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(toCertify, gbc); 
     rp.add(toCertify); 

     //row 40/////////////////////////////////////////////////////////////// 
     gbc.gridx = 0; 
     gbc.gridy = 40; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 3; 
     authorizedBy.setFont(authorizedBy.getFont().deriveFont(18.0f)); 
     gridbag.setConstraints(authorizedBy, gbc); 
     rp.add(authorizedBy); 


     for (int r = 0; r <= 9; r++)//gridlines for personnel space 
     { 
      gbc.gridx = 0; 
      gbc.gridy = 7 + (3*r); 
      gbc.gridheight = 3; 
      gbc.gridwidth = 1; 
      personnelSpace[r].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      gridbag.setConstraints(personnelSpace[r], gbc); 
      rp.add(personnelSpace[r]); 
     } 
     //create calendar grid lines 
     int yPointer = 7; 
     int xPointer = 3; 
     int shadePtr = 8; 
     for (int j = 0; j <= 299; j++) 
     { 
      gbc.gridx = xPointer; 
      gbc.gridy = yPointer; 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      calendarGridLines[j].setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK)); 
      if (yPointer == shadePtr){ //if row number = shadePtr then color the cell 
       calendarGridLines[j].setOpaque(true); 
       calendarGridLines[j].setBackground(shade); 
      } 
      gridbag.setConstraints(calendarGridLines[j], gbc); 
      rp.add(calendarGridLines[j]); 
      xPointer++; //go to next cell in row 
      j++; //use the next jlabel 
      gbc.gridx = xPointer; 
      gbc.gridy = yPointer; 
      gbc.gridheight = 1; 
      gbc.gridwidth = 1; 
      calendarGridLines[j].setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, Color.BLACK)); 
      if (yPointer == shadePtr){ //if row number = shadePtr then color the cell 
       calendarGridLines[j].setOpaque(true); 
       calendarGridLines[j].setBackground(shade); 
      } 
      gridbag.setConstraints(calendarGridLines[j], gbc); 
      rp.add(calendarGridLines[j]); 

      xPointer++; //go to next cell in row 

      if(xPointer == 13) //if end of column then go to next row and reset column pointer to 3 and increment shade pointer by 3 
      { 
       yPointer++; //go down a row 
       xPointer = 3; 
       if((j % 3) == 0) { 
        shadePtr = yPointer; 
       } 
      } 
     } 

     JButton printTest = new JButton("PrintTest"); 
     printTest.addActionListener(this); 
     gbc.gridx = 0; 
     gbc.gridy = 41; 
     gbc.gridheight = 1; 
     gbc.gridwidth = 1; 
     gridbag.setConstraints(printTest, gbc); 
     rp.add(printTest); 

    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     PrinterJob printJob = PrinterJob.getPrinterJob(); 
     printJob.setPrintable(this); 
     if (printJob.printDialog()){ 
      try{ 
       printJob.print(); 
      } 
      catch(Exception ex){ 
       throw new RuntimeException(ex); 
      } 
     } 

    } 
    @Override 
    public int print(Graphics g, PageFormat pf, int index) 
      throws PrinterException { 
     Graphics2D g2 = (Graphics2D)g; 
     if (index >= 1){ 
      return Printable.NO_SUCH_PAGE; 
     } 
     else { 
      AffineTransform originalTransform = g2.getTransform(); 

      double scaleX = pf.getImageableWidth()/rp.getWidth(); 
      double scaleY = pf.getImageableHeight()/rp.getHeight(); 
      // Maintain aspect ratio 
      double scale = Math.min(scaleX, scaleY); 
      g2.translate(pf.getImageableX(), pf.getImageableY()); 
      g2.scale(scale, scale); 
      rp.printAll(g2); 

      g2.setTransform(originalTransform); 
      return Printable.PAGE_EXISTS; 
     } 
    } 

} 

답변

0

크기 조정 이벤트 "무효화/다시 칠". 이렇게하면 기본 GUI가 프레임 크기로 조정되지 않습니다. 대신 "외부"JPanel은 크기가 조정되는 것입니다.

0

당신의 JPanel의에서 당신은 둘 다 사용할 수 있습니다 creationComplete 컴퍼넌트 청취자 수동으로 처리 할 수있는 I이 JScrollPane의 내부에 앉아 다른 JPanel의 내부에 내 주요 GUI 패널을 넣어

JPanel component = new JPanel(); 
component.addComponentListener(new ComponentListener() 
{ 
     public void componentResized(ComponentEvent evt) { 
      Component c = (Component)evt.getSource(); 
      //........ 
     } 
}); 
+0

setSize를 사용하면 일반적으로 존중하지 않으므로 대신 serPreferredSize를 사용하는 것으로 읽었습니다. 또한,이 답변에 따르면 : jpanels되지 않습니다 - http : //stackoverflow.com/questions/10157235/how-do-i-disable-a-jpanel-so-that-it-cant-change-size-in-java 사용자가 다시 조정할 수 –

+0

그래서 ... 문제가 해결되었습니다! – floppy12

관련 문제