将图像居中并在边框布局中定位文本

时间:2017-02-17 12:48:55

标签: java swing

我试图将图像居中并将文字放在边框布局的南方。

这是我到目前为止所拥有的

import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FlowWindow extends JFrame {

    public FlowWindow() {
        Container contentPane = getContentPane();
        JPanel PanelImage = new JPanel();
        JPanel PanelText = new JPanel();
        contentPane.setLayout(new FlowLayout());

此部分是图像应在边框中居中的位置。

        //calls the image and displays it to screen
        //supposed to center it also
        ImageIcon imageIcon = new
        ImageIcon(getClass().getResource("WITlogo.JPG"));
        JLabel label = new JLabel(imageIcon);
        PanelImage.add(label);
        contentPane.add(PanelImage, BorderLayout.CENTER);

此部分是文本应位于边界南部的位置。

        //creates the string of text and displays to screen
        //supposed to position it in the south section of the border
        contentPane.add(new JLabel("Waterford Institude of technology"));
        PanelText.add(label);
        contentPane.add(PanelText, BorderLayout.SOUTH);

    }

    public static void main(String args[]) {
        FlowWindow window = new FlowWindow ();
        window .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setTitle("FlowWindow ");
        window.pack();
        window.setVisible(true);
        window .show();
    }

}

2 个答案:

答案 0 :(得分:0)

您正在使用FlowLayout并使用BorderLayout约束添加内容(例如BorderLayout.SOUTH)。

如果您想要一张带有文字的居中图片,则需要在另一个面板中放置一个面板。

答案 1 :(得分:0)

The easiest way to center a component is to use a GridBagLayout:

JPanel center = new JPanel( new GridBagLayout() );
JLabel imageLabel = new JLabel(...);
center.add(image, new GridBagConstraints());
JLabel textLabel = new JLabel(...);

Then you add your components to the frame using:

add(imageLabel, BorderLayout.CENTER);
add(textLabel, BorderLayout.PAGE_END);
  

我真的很喜欢这个

然后首先阅读Layout Managers上Swing教程中的部分,了解显示基础知识的工作示例。

不要忘记查看教程目录,了解有关所有Swing基础知识的更多信息。