我正在为面板使用GridBagLayout。
我想在下面的图片中添加组件。但是无法将标签药物处方放在标签Intern下。
有人知道吗?
GridBagLayout gridbaglayout = new GridBagLayout();
TGridBagConstraints constraints = new TGridBagConstraints();
northPanel = new WebPanel(gridbaglayout);
northPanel.setBorder(new EmptyBorder(5,5,5,5));
// *** PackComboBox row
constraints.setGxGyGwGhWxWyFillAnchor(0, 0, 1, 1, 0.0, 0.0, TGridBagConstraints.HORIZONTAL, TGridBagConstraints.NORTHWEST);
gridbaglayout.setConstraints(PackComboBox, constraints);
northPanel.add(FerPackComboBox);
constraints.setGxGyGwGhWxWyFillAnchor(1, 0, 1, 1, 0.0, 0.0, TGridBagConstraints.HORIZONTAL, TGridBagConstraints.NORTHWEST);
gridbaglayout.setConstraints(approveButton, constraints);
northPanel.add(approveButton);
constraints.setGxGyGwGhWxWyFillAnchor(2, 0, 1, 1, 0.0, 0.0, TGridBagConstraints.HORIZONTAL, TGridBagConstraints.NORTHWEST);
WebLabel internLabel = PrescriptionSummaryUtil.createCustomLabel("Intern",new Font("SansSerif",Font.BOLD,20),Color.decode("#ABB202").darker() );
gridbaglayout.setConstraints(internLabel, constraints);
northPanel.add(internLabel);
constraints.setGxGyGwGhWxWyFillAnchor(5, 0, 1, 1, 0.0, 0.0, TGridBagConstraints.HORIZONTAL, TGridBagConstraints.NORTHWEST);
gridbaglayout.setConstraints(patientInfoBox, constraints);
northPanel.add(patientInfoBox);
// *** Medication PerscriptionLabel row
constraints.setGxGyGwGhWxWyFillAnchor(1, 1, 2, 0, 0.0, 0.0, TGridBagConstraints.NORTHEAST, TGridBagConstraints.NORTHEAST);
WebLabel medicationPerscriptionLabel = PrescriptionSummaryUtil.createCustomLabel("Medication perscription",new Font("SansSerif",Font.BOLD,20),Color.decode("#ABB202").darker() );
gridbaglayout.setConstraints(medicationPerscriptionLabel, constraints);
northPanel.add(medicationPerscriptionLabel);
最佳答案
生成满足您要求的代码并不是一件容易的事,因为我对您用来生成约束的API并不陌生...
但是,以下代码将产生...
public class BadLayout {
public static void main(String[] args) {
new BadLayout();
}
public BadLayout() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new LayoutPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class LayoutPane extends JPanel {
public LayoutPane() {
setLayout(new GridBagLayout());
JLabel intern = new JLabel("Intern");
JLabel med = new JLabel("Medication perscription");
JPanel box = new JPanel(new GridBagLayout());
box.setBorder(new LineBorder(Color.BLACK));
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(40, 40, 40, 40);
box.add(new JLabel("I'm a box"), gbc);
gbc = new GridBagConstraints();
gbc.weightx = 1;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTH;
add(intern, gbc);
gbc.gridy++;
gbc.weighty = 1;
add(med, gbc);
gbc.weighty = 0;
gbc.weightx = 0;
gbc.gridx = 1;
gbc.gridy = 0;
add(box, gbc);
}
}
}