GridBagConstraints - проблема смещена влево и размер не совпадает - PullRequest
0 голосов
/ 13 января 2011

У меня в Java две панели, которые должны иметь одинаковое расположение, есть мои функции для панелей инициализации.

private void InitializePanelCom(){
        pnlCom=new JPanel();
        pnlCom.setSize(300,160);
        pnlCom.setLocation(10, 60);
        add(pnlCom);
        GridBagLayout gb=new GridBagLayout();
        GridBagConstraints gc=new GridBagConstraints();
        pnlCom.setLayout(gb);

        jLabelcommPort = setJLabel("Com Port : ");
        jLabelbaudRate = setJLabel("Baud Rate : ");
        jLabelplcAddress = setJLabel("Plc Address : ");
        jLabelsendTime = setJLabel("Send Time : ");
        jLabelx50 = setJLabel(" x 50 ms (2 - 99)");
        jComboBoxcommPort = setJComboBox(commPortList);
        jComboBoxbaudRate = setJComboBox(bitRateList);
        jTextAreaPlcAddress = setJTextField("");
        jTextAreaSendTime = setJTextField("");

        gc.insets = new Insets(10,0,0,0);
        gc.ipadx = 120; 
        gc.weightx = 1;
        gc.gridx = 0;
        gc.gridy = 0;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jLabelcommPort,gc);

        gc.insets = new Insets(10,0,0,0);
        gc.ipadx = 120; 
        gc.weightx = 1;
        gc.gridx = 1;
        gc.gridy = 0;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jComboBoxcommPort,gc);

        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=0;
        gc.gridy=1;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jLabelbaudRate,gc);


        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=1;
        gc.gridy=1;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jComboBoxbaudRate,gc);   

        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=0;
        gc.gridy=2;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jLabelplcAddress,gc);


        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=1;
        gc.gridy=2;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jTextAreaPlcAddress,gc); 

        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=0;
        gc.gridy=3;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jLabelsendTime,gc);


        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=1;
        gc.gridy=3;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jTextAreaSendTime,gc);

        gc.insets=new Insets(10,0,0,0);
        gc.ipadx=120;
        gc.weightx=1;
        gc.gridx=2;
        gc.gridy=3;
        gc.anchor=GridBagConstraints.EAST;
        pnlCom.add(jLabelx50,gc);
    }
    ![alt text][1]


private void InitializePanelTcp(){

        pnlTcp=new JPanel();
        pnlTcp.setSize(300,160);
        pnlTcp.setLocation(10, 60);
        add(pnlTcp);
        GridBagLayout gb=new GridBagLayout();
        GridBagConstraints gc=new GridBagConstraints();
        pnlTcp.setLayout(gb);


        lblIPAddress=setJLabel("IP Address : ");
        txtIPAddress=setJTextField("");
        lblPort=setJLabel("Port : ");
        txtPort=setJTextField("");

        cmbBaudRateTCP = setJComboBox(bitRateList);
        lblBaudRateTCP = setJLabel("Baud Rate : ");
        lblParityCheck=setJLabel("Parity check : ");
        txtParityCheck=setJTextField("");



        gc.insets = new Insets(10,0,0,0);
        //gc.ipadx = 20; 
        gc.weightx = 0.3;
        gc.gridx = 0;
        gc.gridy = 0;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(lblIPAddress,gc);

        gc.insets = new Insets(10,0,0,0);
        //gc.ipadx = 80; 
        gc.weightx = 0.7;
        gc.gridx = 1;
        gc.gridy = 0;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(txtIPAddress,gc);

        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=120;
        gc.weightx=0.3;
        gc.gridx=0;
        gc.gridy=1;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(lblPort,gc);


        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=80;
        gc.weightx=0.7;
        gc.gridx=1;
        gc.gridy=1;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(txtPort,gc); 

        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=120;
        gc.weightx=0.3;
        gc.gridx=0;
        gc.gridy=2;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(lblBaudRateTCP,gc);


        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=0;
        gc.weightx=0.7;
        gc.gridx=1;
        gc.gridy=2;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(cmbBaudRateTCP,gc);  

        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=120;
        gc.weightx=0.3;
        gc.gridx=0;
        gc.gridy=3;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(lblParityCheck,gc);


        gc.insets=new Insets(10,0,0,0);
        //gc.ipadx=0;
        gc.weightx=1.7;
        gc.gridx=1;
        gc.gridy=3;
        gc.anchor=GridBagConstraints.WEST;
        pnlTcp.add(txtParityCheck,gc);





    }

alt text

alt text Проблема в том, что первая панель (initializetcp, картинка не выглядит одинаково, надписи перемещаются слева, текстовые поля маленькие и некрасивые, они разные) Кто-нибудь может помочь, я новичок с GridBagContsraints вообще?

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Обычно, когда я использую weightx или weightty, я также использую ограничение заполнения: gc.fill = GridBagConstraint.Hor Horizontal;

Например, следующий код заставит ваш компонент занять 50% доступного горизонтального пространства.

gc.weightx = 0.5;
gc.fill = GridBagConstraint.Horizontal;

Я не могу проверить ваш код на самом деле, но попробуйте, это должно решить вашу проблему. Вам также следует попытаться вызвать pack (); в конце родительского конструктора (я полагаю, JFrame).

1 голос
/ 13 января 2011

Быстрый взгляд, проблемная панель имеет все свои декларации значений ipadx, сделанные в виде комментариев. Панель, которая выглядит хорошо, нет. Удалите пометки // и посмотрите, поможет ли это:)

0 голосов
/ 14 января 2011

У меня самые глубокие симпатии ...

http://madbean.com/anim/totallygridbag/

...