2017-01-14 13 views
-1

Я работаю над проектом, который приложение должно иметь возможность содержать некоторые изображения на кнопках. Каждая кнопка должна иметь одинаковый размер по длине и ширине. И должно быть от 10 до 20 кнопок плюс в приложении. Поэтому я решил использовать JScrollPane для организации всех JButton по горизонтали. Во-первых, я добавляю все эти JButton в JPanel, который был установлен в Layout для GridLayout с 1 столбцом и 10 строками. Затем добавьте JPanel в JScrollPane. В результате все кнопки имеют одинаковый размер. Но проблема в том, что JScrollBar в JScrollPane не смог двигаться (может, потому что недостаточно кнопки, чтобы превышать длину JScrollPane или GridLayout, каждый раз изменял размер каждой кнопки). Итак, я попытался добавить еще JButton до 20 (рис. 2). Итак, JScrollBar в JScrollPane был включен, и я мог его переместить. Но, к сожалению, все JButton в JScrollPane были короче и короче каждый раз, когда добавлялось больше кнопок.Как сохранить размер JButtons, при добавлении большего количества JButton в JScrollPane?

Я думаю, это из-за GridLayout, что я установил JPanel, который автоматически изменяет размер каждого компонента. Поэтому я попытался использовать FlowLayout, но он не был удовлетворен, как ожидалось, потому что JButton был слишком маленьким и не мог изменять размер (pic3). Я просто хотел сохранить размер каждой кнопки, не меняя при каждом добавлении новых кнопок или в состоянии установить их размер.

У кого-нибудь есть опыт перед этим и могли бы поделиться, пожалуйста?

public class Testing 
    { 

     public Testing() 
     { 
      JFrame frm = new JFrame(); 
      JPanel panel = new JPanel(); 
      JScrollPane sc = new JScrollPane(); 

      // init frame 
      frm.setSize(1366, 768); 
      frm.setLayout(new GridLayout(5, 1, 10, 10)); 

      // init panel 
      panel = new JPanel(); 
      panel.setLayout(new FlowLayout(FlowLayout.LEFT)); 

      // set some JScrollpane properties 
      sc.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
      sc.setViewportView(panel); 

      // add few button into panel 
      for (int i = 0; i < 20; i++) 
      { 
       panel.add(new JButton("Button " + i)); 
      } 

      frm.add(sc); 
      frm.setVisible(true); 
      frm.setLocationRelativeTo(null); 
     } 

     public static void main(String[] ar) 
     { 

      new Testing(); 
     } 
    } 

enter image description here

enter image description here enter image description here

ответ

0

Ok .. Теперь, к счастью, я смог найти ответ случайно. Чтобы установить все компоненты одного размера в JScrollPane, просто установите макет JPanel в FlowLayout и измените размер элемента управления, который вы хотите добавить в JPanel, используя setPreferredSize() вместо setSize(). Это будет работать как прелесть.)

Ссылка: Giulio Biagini

 Смежные вопросы

  • Нет связанных вопросов^_^