0

中央のパネルがあります。これは私の親パネルです。親パネルに 3 つのパネルを追加しています。

パネルは垂直に積み重ねられます。タイトル パネル、中央パネル、下部パネルのように。タイトルパネルに集中したいだけです。テキストを使用して jlabel を作成すると。ラベルが表示され、パネルの境界線が親パネルの幅全体に広がります。これは私が望むものです。

private JPanel titlePanel() {
  String text = "<html><b><big><font color=#5C8C5C>Help Dialog</font></big></b></html>";
  JLabel textLabel = new JLabel(text, JLabel.CENTER); 
  JPanel p = new JPanel();
  p.setLayout(new BoxLayout(p, BoxLayout.LINE_AXIS));
  p.add(textLabel);
  p.setBorder(BorderFactory.createLineBorder(Color.black));
  return p;   
}

私は実際には、html テキストではなくアイコンをラベルとして使用したいと考えています。そのため、コードに変更を加えます。

private JPanel titlePanel() {
  Registry appReg = Registry.getRegistry(this);
  ImageIcon ediLabelIcon = appReg.getImageIcon("ToolLabel.ICON");
  JLabel textLabel = new JLabel(ediLabelIcon, JLabel.CENTER); 
  JPanel p = new JPanel();
  p.setLayout(new BoxLayout(p, BoxLayout.LINE_AXIS));
  p.add(textLabel);
  p.setBorder(BorderFactory.createLineBorder(Color.black));
  return p;   
}

ラベルが表示されるようになりましたが、パネルの境界線はラベルと同じ幅しかなく、親パネルの幅を広げていません。

パネルの境界線をラベルと同じ幅ではなく、親パネルの幅に拡張することを理解しようとしています。これは親パネルのコードです。

 private void createDialog() {

  Component titlePanel = titlePanel();
  Component verbiagePanel = verbiagePanel();
  Component closeButtonPanel = closeButton();
  setTitle("HELP Dialog");
  centerPanel = new JPanel();
  centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.PAGE_AXIS));
  centerPanel.setPreferredSize(new Dimension(600, 300));
  centerPanel.add(titlePanel);
  centerPanel.add(Box.createRigidArea(new Dimension(0, 10)));
  centerPanel.add(verbiagePanel);
  centerPanel.add(Box.createHorizontalGlue());
  centerPanel.add(Box.createRigidArea(new Dimension(0, 10)));
  centerPanel.add(closeButtonPanel);
  getContentPane().add(centerPanel);
  this.pack();

}
4

1 に答える 1

1

JLabel テキストで HTML を使用すると、JLabel の優先サイズを計算するメカニズムが切り替わりました。ここでは詳しく説明できませんが、タイトル ラベルの作成を

JLabel textLabel = new JLabel("<html></html>", ediLabelIcon, JLabel.CENTER);

ラベルは親パネルの幅に引き伸ばされます。

または、GridBagLayout などの別のレイアウト マネージャーを選択することもできます。GridBagLayout を使用すると、任意のコンポーネントをその親の幅に強制的に伸ばすことができます。

于 2012-08-02T14:36:33.037 に答える