2015-11-20 15 views
0

因此,我试图找出如何添加滚动条到我的Jframe窗口有点问题。我想出了如何做到这一点,但是当我实现它时,应该显示在框架中的所有组件都不是这样,而是我得到了一个空白框架。如何让我的框架可以滚动?如何让我的jframe滚动而不删除文本

这里,如果我对我的GUI代码:

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

import javax.swing.*; 
public class FirstGUI2 { 
private Container pane; 
final boolean fill = true; 
final boolean weightX = true; 
final boolean RIGHT_TO_LEFT = false; 
public String mon = ""; 
public String tues = ""; 
public String wed = ""; 
public String thu = ""; 
public String fri = ""; 
private JTextArea textAreaMon = new JTextArea(mon); 
private JTextArea textAreaTue = new JTextArea(tues); 
private JTextArea textAreaWed = new JTextArea(wed); 
private JTextArea textAreaThu = new JTextArea(thu); 
private JTextArea textAreaFri = new JTextArea(fri); 
private JTextArea description; 

public void addComponents(Container pane) { 
    if (RIGHT_TO_LEFT) 
     pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

    JButton button; 
    pane.setLayout(new GridBagLayout()); 
    GridBagConstraints c = new GridBagConstraints(); 
    c.weightx = 1; 
    c.fill = GridBagConstraints.HORIZONTAL; 

    button = new JButton("Open File"); 
    c.gridx = 1; 
    c.gridy = 1; 
    c.insets = new Insets(5, 5, 5, 5); 
    pane.add(button, c); 

    textAreaMon = new JTextArea(mon); 
    // textAreaMon.append(mon.substring(0)); 
    textAreaMon.setLineWrap(true); 
    textAreaMon.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 2; 
    //JScrollPane scroll = new JScrollPane(textAreaMon); 
    pane.add(textAreaMon, c); 

    textAreaTue = new JTextArea(tues); 
    textAreaTue.setLineWrap(true); 
    textAreaTue.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 3; 
    pane.add(textAreaTue, c); 

    textAreaWed = new JTextArea(wed); 
    textAreaWed.setLineWrap(true); 
    textAreaWed.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 4; 
    pane.add(textAreaWed, c); 

    textAreaThu = new JTextArea(thu); 
    textAreaThu.setLineWrap(true); 
    textAreaThu.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 5; 
    pane.add(textAreaThu, c); 

    textAreaFri = new JTextArea(fri); 
    textAreaFri.setLineWrap(true); 
    textAreaFri.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 6; 
    pane.add(textAreaFri, c); 

    description = new JTextArea(
      "\n Click the open button in order to select and im" 
      + "port your .csv file. Your scehdule and times will be displayed in the schedule below.\n"); 
    description.setEditable(false); 
    c.gridx = 1; 
    c.gridy = 0; 

    pane.add(description, c); 

    // attaching the file opener to the open file button 
    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent ae) { 

      new InterfacePanel(); 
      //textAreaMon.setText(mon); 
      makeGUI(); 
     } 
    }); 
} 

// creates the frame and showing the GUI to the user 
public static void makeGUI() { 
    JFrame frame = new JFrame("Final Exam Scheduler"); 
    frame.setSize(1000, 1000); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel panel = new JPanel(); 

    FirstGUI2 add = new FirstGUI2(); 

    JScrollPane pane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    add.addComponents(frame.getContentPane()); 
    frame.setContentPane(pane); 

    add.printToGUI(); 
    frame.pack(); 
    frame.setVisible(true); 
} 

public void printToGUI() { 
    // JText Fields 
    mon = "Monday: \n \n 8:00 - 10:00:\t Group Exam 1 \n 10:15-12:15:\t Group Exam 2 \n 12:45 - 2:45:\t"; 
// while (!ArrayListsForClasses.time1.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time1.size(); i++) { 
      mon += ArrayListsForClasses.time1.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time1.get(i).displayCourse()); 
      mon += ", "; 
     } 
    //} 
    mon += "\n 3:00 - 5:00:\t"; 
    //while (!ArrayListsForClasses.time2.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time2.size(); i++) { 
      mon += ArrayListsForClasses.time2.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time2.get(i).displayCourse()); 
      mon += ", "; 
     } 
    //} 
    mon += "\n 5:30 - 7:30:\t Group Exam 3 \n 7:45 - 9:45:\t"; 
    //while (!ArrayListsForClasses.time3.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time3.size(); i++) { 
      mon += ArrayListsForClasses.time3.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time3.get(i).displayCourse()); 
      mon += ", "; 
     } 
    //} 
    mon += "\n \n"; 
    textAreaMon.setText(mon); 

    // textAreaTues 
    tues = "Tuesday: \n \n 8:00 - 10:00: \t"; 
    //while (!ArrayListsForClasses.time4.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time4.size(); i++) { 
      tues += ArrayListsForClasses.time4.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time4.get(i).displayCourse()); 
      tues += ", "; 
     } 
    //} 
    tues += "\n 10:15 - 12:15:\t Group Exam 4 \n 12:45 - 2:45:\t "; 
    //while (!ArrayListsForClasses.time5.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time5.size(); i++) { 
      tues += ArrayListsForClasses.time5.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time5.get(i).displayCourse()); 
      tues += ", "; 
     } 
    //} 
    tues += "\n 3:00 - 5:00:\t "; 
    //while (!ArrayListsForClasses.time6.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time6.size(); i++) { 
      tues += ArrayListsForClasses.time6.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time6.get(i).displayCourse()); 
      tues += ", "; 
     } 
    //} 
    tues += "\n 5:30 - 7:30:\t "; 
    //while (!ArrayListsForClasses.time7.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time7.size(); i++) { 
      tues += ArrayListsForClasses.time7.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time7.get(i).displayCourse()); 
      tues += ", "; 
     } 
    //} 
    tues += "\n 7:45 - 9:45:\t "; 
    //while (!ArrayListsForClasses.time8.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time8.size(); i++) { 
      tues += ArrayListsForClasses.time8.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time8.get(i).displayCourse()); 
      tues += ", "; 
     } 
    //} 
    tues += "\n \n"; 
    textAreaTue.setText(tues); 

    // TextAreaWed 
    wed = "Wednesday \n \n 8:00 - 10:00:\t"; 
    //while (!ArrayListsForClasses.time9.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time9.size(); i++) { 
      wed += ArrayListsForClasses.time9.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time9.get(i).displayCourse()); 
      wed += ", "; 
     } 
    //} 
    wed += "\n 10:15-12:15:\t"; 
    //while (!ArrayListsForClasses.time10.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time10.size(); i++) { 
      wed += ArrayListsForClasses.time10.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time10.get(i).displayCourse()); 
      wed += ", "; 
     } 
    //} 
    wed += "\n 12:45 - 2:45 :\t Group Exam 5 \n 3:00 - 5:00:\t"; 
    //while (!ArrayListsForClasses.time11.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time11.size(); i++) { 
      wed += ArrayListsForClasses.time11.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time11.get(i).displayCourse()); 
      wed += ", "; 
     } 
    //} 
    wed += "\n 5:30 - 7:30:\t"; 
    //while (!ArrayListsForClasses.time12.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time12.size(); i++) { 
      wed += ArrayListsForClasses.time12.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time12.get(i).displayCourse()); 
      wed += ", "; 
     } 
    //} 
    wed += "\n 7:45 - 9:45:\t"; 
    //while (!ArrayListsForClasses.time13.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time13.size(); i++) { 
      wed += ArrayListsForClasses.time13.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time13.get(i).displayCourse()); 
      wed += ", "; 
     } 
    //} 
    wed += "\n \n"; 
    textAreaWed.setText(wed); 
    // TextAreaThurs 
    thu = "Thursday \n \n 8:00 - 10:00:\t"; 
    //while (!ArrayListsForClasses.time14.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time14.size(); i++) { 
      thu += ArrayListsForClasses.time14.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time14.get(i).displayCourse()); 
      thu += ", "; 
     } 
    //} 
    thu += "\n 10:15-12:15 :\t Group Exam 6 \n 12:45 - 2:45:\t"; 
    //while (!ArrayListsForClasses.time15.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time15.size()-1; i++) { 
      thu += ArrayListsForClasses.time15.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time15.get(i).displayCourse()); 
      thu += ", "; 
     } 
    //} 
    thu += "\n 3:00 - 5:00:\t"; 
    //while (!ArrayListsForClasses.time16.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time16.size(); i++) { 
      thu += ArrayListsForClasses.time16.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time16.get(i).displayCourse()); 
      thu += ", "; 
     } 
    //} 
    thu += "\n 5:30 - 7:30:\t Group Exam 7 \n 7:45 - 9:45:\t"; 
    //while (!ArrayListsForClasses.time17.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time17.size(); i++) { 
      thu += ArrayListsForClasses.time17.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time17.get(i).displayCourse()); 
      thu += ", "; 
     } 
    //} 
    thu += "\n \n"; 
    textAreaThu.setText(thu); 

    // TextAreaFri 
    fri = "Friday \n \n 8:00 - 10:00:\t Group Exam 8 \n 10:15-12:15:\t"; 
    //while (!ArrayListsForClasses.time18.isEmpty()) { 
     for (int i = 0; i < ArrayListsForClasses.time18.size(); i++) { 
      fri += ArrayListsForClasses.time18.get(i).displayCourse(); 
      System.out.println("Added to string for GUI: " + ArrayListsForClasses.time18.get(i).displayCourse()); 
      fri += ", "; 
     } 
    //} 
    fri += "\n 12:45 - 2:45:\t Group Exam 9"; 
    fri += "\n \n"; 
    textAreaFri.setText(fri); 
} 

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      makeGUI(); 
     } 
    }); 

} 

}

+0

请参阅[为挂接近检测/修复一个代码块的支架](http://meta.stackexchange.com/q/251795/155831),因为我不能再纠结这个问题了。 –

回答

3

确保您的面板传递给JScrollPane构造:

public static void makeGUI() { 
     final JFrame frame = new JFrame("Final Exam Scheduler"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     final JPanel panel = new JPanel(); 
     final Test add = new Test(); 
     add.addComponents(panel); 

     final JScrollPane pane = new JScrollPane(panel, // <-- here 
      JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     frame.getContentPane().add(pane); 

     add.printToGUI(); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
+0

谢谢你,你没有想法,你只是让三个大学的孩子几乎没有什么了不起! – Tyler

+2

很高兴帮助!如果您愿意,您可以将答案标记为已接受。 – whiskeyspider