title: Align to right with GridBagLayout
body: <p>I'm creating an easy GUI using GridBagLayout and almost everything goes right, but there is this detail: having two columns, the left one for labels and the right one for other widgets like JTextArea, I want the first column to be aligned to right.</p>
  
  <p>So I tried with anchor atribute set to GridBagConstraints.NORTHEAST or .EAST, and none of them work.</p>
  
  <p>My code is the following:</p>
  
  <pre><code>private void createDataPanel() {
          data = new JPanel();
          data.setLayout(new GridBagLayout());
          GridBagConstraints c = new GridBagConstraints();
          data.setBorder(new TitledBorder("NOTAM proposal parameters"));
  
          c.gridx = 0;
          c.gridy = 0;
          c.insets = new Insets(5, 10, 5, 10);
          c.fill = GridBagConstraints.HORIZONTAL;
          data.add(new JLabel("Start time (DD-MM-YYYY HH:MM:SS):"), c);
  
          c.gridx++;
          long today = System.currentTimeMillis();
          startTimePicker = new JXDatePicker(new Date(today));
          startTimePicker.setFormats(dateFormatter);
          data.add(startTimePicker);
  
          c.gridx = 0;
          c.gridy++;
          c.anchor = GridBagConstraints.EAST;
          data.add(new JLabel("End time (DD-MM-YYYY HH:MM:SS):"), c);
  
          c.gridx++;
          c.anchor = GridBagConstraints.CENTER;
          long tomorrow = today + 86400000;
          endTimePicker = new JXDatePicker(new Date(tomorrow));
          endTimePicker.setFormats(dateFormatter);
          data.add(endTimePicker, c);
  
          c.gridx = 0;
          c.gridy++;
          c.anchor = GridBagConstraints.NORTHEAST;
          JPanel itemEPanel = new JPanel();
          itemEPanel.setLayout(new BoxLayout(itemEPanel, BoxLayout.Y_AXIS)); 
          itemEPanel.add(new JLabel("Item E:"));
          remainingChars = new JLabel(Integer.toString(availableChars) + " characters remaining");
          itemEPanel.add(remainingChars);
          data.add(itemEPanel, c);
  
          c.gridx++;
          c.anchor = GridBagConstraints.CENTER;
          itemEText = new JTextArea(8, 1);
          JScrollPane itemEScroll = new JScrollPane(itemEText);
          itemEText.setLineWrap(true);
          itemEText.setWrapStyleWord(true);
          itemEText.setBackground(Color.WHITE);
          itemEText.getDocument().addDocumentListener(new DocumentListener() {
  
              @Override
              public void removeUpdate(DocumentEvent e) {
                  updateRemainingChars(e.getDocument());
              }
  
              @Override
              public void insertUpdate(DocumentEvent e) {
                  updateRemainingChars(e.getDocument());
              }
  
              @Override
              public void changedUpdate(DocumentEvent e) {
                  updateRemainingChars(e.getDocument());
              }
  
              public void updateRemainingChars(Document doc) {
                  availableChars = maxItemECharacters - doc.getLength();
                  if(availableChars&gt;=0){
                      remainingChars.setText(Integer.toString(availableChars) + " characters remaining");
                      remainingChars.setForeground(Color.BLACK);
                      if(!okButton.isEnabled()) okButton.setEnabled(true);
                  }
                  else{
                      remainingChars.setText("Message too long: " + Integer.toString(availableChars));
                      remainingChars.setForeground(Color.RED);
                      if(okButton.isEnabled()) okButton.setEnabled(false);
                  }
              }
          });
          data.add(itemEScroll, c);
  
          c.gridx = 0;
          c.gridy++;
          JPanel itemDPanel = new JPanel(new FlowLayout());
          applicable = new JCheckBox("Applicable");
          applicable.setSelected(true);
          applicable.addActionListener(new ActionListener() {
  
              @Override
              public void actionPerformed(ActionEvent arg0) {
                  itemDText.setEnabled(applicable.isSelected());
              }
          });
          itemDPanel.add(applicable);
          itemDPanel.add(new JLabel("Item D:"));
          data.add(itemDPanel, c);
  
          c.gridx++;
          itemDText = new JTextField();
          data.add(itemDText, c);
      }
  </code></pre>
  
  <p>Nevertheless, it currently looks like this:
  <img src="https://i.stack.imgur.com/n3K89.png" alt="enter image description here"></p>
  
  <p>How can it align to right then?</p>