Advertisement
Guest User

SSCCE JList + JScrollPane scrolling to bottom.

a guest
Jun 22nd, 2014
872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.57 KB | None | 0 0
  1. //YOU NEED TO MANUALLY ADD A "package ...;" HERE.
  2.  
  3.  
  4. import java.awt.Dimension;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7.  
  8. import javax.swing.BoxLayout;
  9. import javax.swing.DefaultListModel;
  10. import javax.swing.JButton;
  11. import javax.swing.JFrame;
  12. import javax.swing.JList;
  13. import javax.swing.JPanel;
  14. import javax.swing.JScrollBar;
  15. import javax.swing.JScrollPane;
  16. import javax.swing.JSeparator;
  17. import javax.swing.ListSelectionModel;
  18. import javax.swing.SwingConstants;
  19.  
  20. public class Foo extends JPanel implements ActionListener {
  21.     private DefaultListModel<String> model;
  22.     private JList<String> triggerList;
  23.     private JScrollPane scrollPane;
  24.     private JButton createButton;
  25.     private JButton removeButton;
  26.    
  27.     public Foo() {
  28.         super();
  29.         this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
  30.         constructingList();
  31.         constructingButtons();
  32.     }
  33.    
  34.     private void constructingButtons() {
  35.         JPanel panel = new JPanel();
  36.         Dimension size = new Dimension(90, 20);
  37.        
  38.         this.createButton = new JButton("Create");
  39.         this.createButton.setActionCommand(Integer.toString(0));
  40.         this.createButton.addActionListener(this);
  41.         this.createButton.setSize(size);
  42.         this.createButton.setMaximumSize(size);
  43.         this.createButton.setMinimumSize(size);
  44.         this.createButton.setPreferredSize(size);
  45.         panel.add(createButton);
  46.        
  47.         panel.add(new JSeparator(SwingConstants.HORIZONTAL));
  48.        
  49.         this.removeButton = new JButton("Remove");
  50.         this.removeButton.setActionCommand(Integer.toString(1));
  51.         this.removeButton.addActionListener(this);
  52.         this.removeButton.setSize(size);
  53.         this.removeButton.setMaximumSize(size);
  54.         this.removeButton.setMinimumSize(size);
  55.         this.removeButton.setPreferredSize(size);
  56.         panel.add(removeButton);
  57.        
  58.         this.add(panel);
  59.     }
  60.    
  61.     private void constructingList() {
  62.         this.model = new DefaultListModel<String>();
  63.         this.triggerList = new JList<String>();
  64.         this.triggerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  65.         this.triggerList.setLayoutOrientation(JList.VERTICAL);
  66.         this.triggerList.setVisibleRowCount(0);
  67.        
  68.         // I don't know how to provide dynamic height here. It's always fixed.
  69.         Dimension size = new Dimension(200, 300);
  70.         this.triggerList.setSize(size);
  71.         this.triggerList.setMinimumSize(size);
  72.        
  73.         this.triggerList.setModel(this.model);
  74.         scrollPane = new JScrollPane(this.triggerList);
  75.         size = new Dimension(200, 300);
  76.         scrollPane.setPreferredSize(size);
  77.         scrollPane.setSize(size);
  78.        
  79.         scrollPane.setVisible(true);
  80.         this.add(scrollPane);
  81.     }
  82.    
  83.     @Override
  84.     public void actionPerformed(ActionEvent event) {
  85.         switch (Integer.valueOf(event.getActionCommand())) {
  86.             default:
  87.                 break;
  88.             case 0: {// Create Button
  89.                 System.out.println("CREATE");
  90.                 short value = Short.valueOf((short) (this.model.getSize() & Short.MAX_VALUE));
  91.                 this.model.addElement("<Untitled> " + Short.toString(value));
  92.                 this.validate();
  93.                 JScrollBar vertical = scrollPane.getVerticalScrollBar();
  94.                 vertical.setValue(vertical.getMaximum() + 1);
  95.                 break;
  96.             }
  97.             case 1: {// Remove button
  98.                 System.out.println("REMOVE");
  99.                 int index = this.triggerList.getSelectedIndex();
  100.                 if (index != -1)
  101.                     this.model.remove(index);
  102.                 else if (!this.model.isEmpty())
  103.                     this.model.remove(this.model.getSize() - 1);
  104.                
  105.                 break;
  106.             }
  107.         }
  108.         this.triggerList.validate();
  109.     }
  110.    
  111.     public static void main(String[] args) {
  112.         JFrame frame = new JFrame("Script Hobby (Hobby)");
  113.         frame.add(new Foo());
  114.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  115.         frame.pack();
  116.         frame.setVisible(true);
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement