L'ajout d'un Composite à JScrollPane
J'ai une interface graphique qui a un Panneau qui contient une séquence d'étiquettes et objets textfield et utilise un ressort de mise en page(c'est le mainPanel) et un autre Panneau qui contient simplement un bouton(buttonPanel). Je suis en train de faire mon mainPanel d'avoir une barre de défilement verticale ainsi. Je tiens à mettre en oeuvre mon interface graphique telle que l'intérieur de la JFrame j'ai 2 panneaux. Le mainPanel apparaît sur la partie supérieure du châssis et de la buttonPanel apparaît au-dessous de la mainPanel.
Mon problème est que je ne suis pas en mesure de faire les Panneaux apparaissent tels que le buttonPanel est en dessous de la mainPanel et je suis également pas sûr de savoir comment ajouter une barre de défilement à la mainPanel. Toute aide serait appréciée.
EDIT : j'ai pu résoudre mon problème concernant le JPanels, maintenant mon seul problème est que je ne peux pas obtenir mon mainPanel pour les faire défiler. J'ai ajouté ma plus récente de code ci-dessous :
Voici le code que j'ai pour l'instant:
public static void main(String args[]) {
JFrame frame = new JFrame("SpringLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane scroll = new JScrollPane();
Container contentPane = frame.getContentPane();
JButton next = new JButton("Next");
JPanel buttonPanel = new JPanel();
buttonPanel.add(next);
SpringLayout layout = new SpringLayout();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(layout);
contentPane.setLayout(new BorderLayout());
int j = 25;
for(int i =0;i<150;i++){
JLabel label = new JLabel("Enter Name " + i );
JTextField text = new JTextField(15);
mainPanel.add(label);
mainPanel.add(text);
layout.putConstraint(SpringLayout.WEST, label, 10, SpringLayout.WEST,
contentPane);
layout.putConstraint(SpringLayout.NORTH, label, j, SpringLayout.NORTH,
contentPane);
layout.putConstraint(SpringLayout.NORTH, text, j, SpringLayout.NORTH,
contentPane);
layout.putConstraint(SpringLayout.WEST, text, 20, SpringLayout.EAST,
label);
j+=30;
}
//mainPanel.setSize(500,800);
scroll.setPreferredSize(new Dimension(500,500));
scroll.setViewportView(mainPanel);
contentPane.add(scroll);
contentPane.add(buttonPanel,BorderLayout.SOUTH);
//mainWindow.add(contentPane);
frame.setSize(500, 600);
frame.setVisible(true);
}
- Je pense que la bonne question +1
Vous devez vous connecter pour publier un commentaire.
À faire défilant, j'ai juste besoin d'augmenter la taille préférée de mon mainPanel telles qu'il serait plus grand que la barre de défilement.
Je ne peux pas commenter quelque chose, d'essayer et de comparer
avis en ce moment, je ne comprends pas pourquoi
SpringLayout
etJFrame#pack()
de ne pas construire la bonne interface graphique basée surPreferredSize
, bosse dans cette ressemble comme (en ce moment) ma question tropcode avec codé en dur
JFrame.setSize()
au lieu de la bonneJFrame#pack()
C'est comment j'allais le faire:
Quelques modifications:
* utiliser le GridBagLayout au lieu de SpringLayout (juste parce que je ne sais pas SpringLayout)
* enveloppez votre mainPanel à l'intérieur d'un JScrollPane
Ne pas regarder et se sentir exactement comme votre exemple. GridBagConstraints peut être réglé.