JAVA. לא מסתדר עם GridBagLayout

liron50

New member
JAVA. לא מסתדר עם GridBagLayout

הי,
אני רוצה להגדיר ב-GridBagLayout רכיב שלא יתרחב במקרה שיש לו מקום...אלא שפשוט ישאר בגודל הסטנדרטי שלו.
אני כרגע מגדיר anchor=NORTH ו- fill=BOTH, ואני מניח שצריך לשנות משהו בפרמטרים האלה, אבל כשאני מנסה הרכיב (leftTablePanel) קטן עד בלתי נראה..
אודה לעזרה בנושא.

import java.awt.Component;import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;import java.awt.GridLayout; import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane; public class GridBagExample extends JPanel{ private GridBagConstraints gridConstraints; private JPanel centerTablePanel; private JPanel leftTablePanel; public GridBagExample(){ setLayout(new GridBagLayout()); gridConstraints = new GridBagConstraints(); leftTablePanel = new JPanel(new GridLayout(0, 3)); leftTablePanel.add(new JLabel("Col 1")); leftTablePanel.add(new JLabel("Col 2")); leftTablePanel.add(new JLabel("Col 3")); for(int i=0; i < 100; i++){ leftTablePanel.add(new JLabel("Row " + i)); leftTablePanel.add(new JLabel("Row " + i)); leftTablePanel.add(new JLabel("Row " + i)); } centerTablePanel = new JPanel(new GridLayout(0, 6)); centerTablePanel.add(new JLabel("Col 1")); centerTablePanel.add(new JLabel("Col 2")); centerTablePanel.add(new JLabel("Col 3")); centerTablePanel.add(new JLabel("Col 4")); centerTablePanel.add(new JLabel("Col 5")); centerTablePanel.add(new JLabel("Col 6")); for(int i=0; i < 2; i++){ centerTablePanel.add(new JLabel("Row " + i)); centerTablePanel.add(new JLabel("Row " + i)); centerTablePanel.add(new JLabel("Row " + i)); centerTablePanel.add(new JLabel("Row " + i)); centerTablePanel.add(new JLabel("Row " + i)); centerTablePanel.add(new JLabel("Row " + i)); } addComponent(new JScrollPane(leftTablePanel), 0, 0, 20, 100, 1, 1, GridBagConstraints.NORTH, GridBagConstraints.BOTH); addComponent(new JScrollPane(centerTablePanel), 20, 0, 40, 100, 1, 1, GridBagConstraints.NORTH, GridBagConstraints.BOTH); setVisible(true); } private void addComponent(Component comp, int gridx, int gridy, int gridwidth, int gridheight, int weightx, int weighty, int anchor, int fill){ gridConstraints.gridx = gridx; gridConstraints.gridy = gridy; gridConstraints.gridwidth = gridwidth; gridConstraints.gridheight = gridheight; gridConstraints.weightx = weightx; gridConstraints.weighty = weighty; gridConstraints.anchor = anchor; gridConstraints.fill = fill; this.add(comp, gridConstraints); } public static void main(String[] args) { JFrame f = new JFrame(); f.getContentPane().add(new GridBagExample()); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setExtendedState(Frame.MAXIMIZED_BOTH); f.setVisible(true); } }

 

liron50

New member
זה לא עוזר במקרה הזה...

כי הוא מוגדר ב-GridBagLayout להתרחב במקרה שיש לו שטח.
ושוב, כשאני מנסה לשנות את הפרמטרים האלה (anchor fill), זה מתכווץ לגודל קטן מדי.
&nbsp
&nbsp
ואגב, במקרה הזה יש לי צורך להשתמש ב-GridBagLayout מאחר ויש מספר רכיבים נוספים על המסך....
אם זה היה רק שני רכיבים כמו בדוגמא, הייתי יכול להשתמש ב-layout יותר פשוט.
 
למעלה