gearbeitet Eine andere Lösung ist, dass Sie zwei Dummy-Panel (Container) ganz rechts, am meisten unten hinzufügen. dann passen Sie Gewicht und Gewicht an, um zusätzlichen Raum zu verteilen. Wenn Sie 1 auf den Dummy setzen, dann wird der gesamte zusätzliche Platz diesem Dummy zugewiesen.
Dies ist ein Beispiel in netbeans bilden.
package tutorial;
/**
*
* @author ttn
*/
public class GridBag1 extends javax.swing.JPanel {
/**
* Creates new form GridBag1
*/
public GridBag1() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("jLabel1");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
add(jLabel1, gridBagConstraints);
jTextField1.setText("jTextField1");
jTextField1.setMinimumSize(new java.awt.Dimension(59, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.3;
add(jTextField1, gridBagConstraints);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 227, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 104, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
add(jPanel1, gridBagConstraints);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 172, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 196, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weighty = 1.0;
add(jPanel2, gridBagConstraints);
jLabel2.setText("jLabel2");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
add(jLabel2, gridBagConstraints);
jTextField2.setText("jTextField2");
jTextField2.setMinimumSize(new java.awt.Dimension(59, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.3;
add(jTextField2, gridBagConstraints);
jScrollPane1.setMinimumSize(new java.awt.Dimension(104, 64));
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
add(jScrollPane1, gridBagConstraints);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
Das ist nicht genug, Sie müssen eine Komponente haben, die den verbleibenden horizontalen Raum füllt. –
ja ich weiß das; das ist nicht die Frage, das Problem besteht darin, dieses ganze "Gitter" in die linke obere Ecke von JPanel zu setzen, das Elemente hält, die den internen Job von GridBags, Komponenten auszulegen, nicht stören. Nur um GridBag zu sagen: ok, Mann, du machst deinen Job so, wie du willst, setz dich einfach links oben in die Mitte –
@as: Bombe hat Recht, dass du GridBagConstraints.anchor benutzen musst, verpasse gerade das bisschen die Füllkomponente. Ich glaube, ich habe recht, wenn ich sage, dass GridBagLayout JComponent.setAlignmentX und JComponent.setAlignmentY nicht respektiert, die beide auf die Komponente selbst und nicht auf den Inhalt eines Containers zutreffen. –