Пожалуйста, смотрите следующий блок кода
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
public class test extends JFrame {
public test(){
this.setBounds(0,0,300,700);
JPanel pnltemp= new JPanel();
//pnltemp.setBounds(0,0,400,1000);
pnltemp.setPreferredSize(new Dimension(400,1000));
JScrollPane scrtemp= new JScrollPane();
scrtemp.getViewport().add(pnltemp);
this.getContentPane().add(scrtemp);
this.getContentPane().add(scrtemp);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String args[]){
new test();
}
}
- Когда мы запускаем вышеуказанный код, комментируя "pnltemp.setBounds (0,0,400,1000);"и заменив его на «pnltemp.setPreferredSize (new Dimension (400,1000));»окно показывает горизонтальные и вертикальные полосы прокрутки.но когда мы запускаем ту же программу, комментируя «pnltemp.setPreferredSize (new Dimension (400,1000));»и заменяя его "pnltemp.setBounds (0,0,400,1000)", окно не показывает горизонтальные и вертикальные полосы прокрутки.
почему одна и та же программа ведет себя по-разному, изменяя setBounds и метод setPreferredSize;поскольку эти два метода выглядят одинаково по поведению.
Или это что-то вроде этого, когда мы используем JScrollPane для получения полосы прокрутки, мы должны использовать setPreferredSize ();метод для компонента, который мы собираемся добавить в JScrollPane.
- Мой второй вопрос - когда мы добавляем pnltemp в scrtemp, то есть JPanel добавляется непосредственно в JScrollPane, тогда его не выдает ошибку, значит, когда мы говорим
scrtemp.add (pnltemp);
не выдает никакой ошибки, но также не показывает pnltemp и полосу прокрутки в scrtemp.но когда мы набираем scrtemp.getViewPort.add (pnltemp);
, это не дает никакой ошибки, но также показывает pnltemp и полосу прокрутки в scrtemp.
Я проверил это, назначив цвет фона JPanel и JScrollPane.
Кто-нибудь может это объяснить?
Спасибо!