在java swing中将图像设置在Border布局中的适当位置

时间:2011-06-03 05:58:04

标签: image swing border-layout

我正在使用JDialog,其中添加了一个JPanel。 Jpanel的布局是BorderLayout。现在我有一些信息和图像显示在该面板中。所以我在Border.Center中添加了所有信息,并在Border.south中添加了图像。但图像没有正确定位。以下内容可能有助于理解:

enter image description here

图像显示在底部和水平中心。但我想要的是图像应该显示在Border.south的左上角。我怎样才能做到这一点?可能吗 ?

修改: -

public static void main(String[] args) {
    JDialog dialog = new JDialog();
    dialog.setSize(350, 350);
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    JScrollPane scroll = new JScrollPane(panel);

    JEditorPane textPane = new JEditorPane();
    textPane.setContentType("text/html");
    StringBuffer buffer = new StringBuffer();
    buffer.append(String.format("<div><b>Name:</b>%s</div>", "Harry"));
    buffer.append(String.format("<div><b>Id:</b>%s</div>", "Joy"));
    textPane.setText(buffer.toString());

    panel.setBackground(Color.white);
    panel.add(textPane,BorderLayout.CENTER);
    JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
    JLabel lbl = new JLabel("Image will be here.");
    lbl.setFont(new Font(Font.SANS_SERIF,0,40));
    jPanel.add(lbl);
    panel.add(jPanel,BorderLayout.SOUTH);
    dialog.add(scroll);
    dialog.setVisible(true);
}

在这段代码中,我添加了一个JLabel(“Image is here here。”)而不是图像来表示情况。

2 个答案:

答案 0 :(得分:0)

JPanel FlowLayout(FlowLayout.LEFT)添加到SOUTH。将图像添加到JPanel,它应该最终位于SOUTH区域的左上角。

答案 1 :(得分:0)

如果有人知道TableLayout,那很容易做到。

double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[][] sizes = {
    {p,f},
    {p,p,f}
};

panel.setLayout(new TableLayout(sizes));

panel.add(textPane, "0,0, 1,0");
panel.add(jPanel, "0,1");