Java SWING:如何修复GridLayout中组件的大小

时间:2017-01-02 06:50:29

标签: java swing layout-manager grid-layout

我正在GridLayout创建一个简单的窗口,这是我的代码:

package com.company.app;

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


public class SpamGUI {

    public static void main(String[] args) {
        System.out.println("Loading Program..");
        JFrame frame = new JFrame("My awesome Program");
        frame.setVisible(true);
        frame.setSize(800, 200);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(0, 3));
        panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

        JLabel lblTrainPath = new JLabel("Enter Training Folder Path");
        lblTrainPath.setSize(100,10);
        panel.add(lblTrainPath);

        JTextField txtTrainPath = new JTextField();
        txtTrainPath.setSize(100,10);
        panel.add(txtTrainPath);

        JButton btnTrainPath = new JButton("Select");
        panel.add(btnTrainPath);


        JLabel lblTrainPath3 = new JLabel("Enter Training3 Folder Path");
        panel.add(lblTrainPath3);

        JTextField txtTestPath = new JTextField();
        panel.add(txtTestPath);

        JButton btnTestPath = new JButton("Select");
        panel.add(btnTestPath);


        frame.add(panel);

    }
}

它生成如下屏幕:

enter image description here

正如您所看到的,它不尊重组件的大小,在屏幕上显示相当广泛。此外,当我从INtelliJ IDEA运行程序时,除非我调整屏幕大小,否则它不会渲染组件。

我还想要一个固定大小的窗口,其中包含自定义大小的组件。

请指导

1 个答案:

答案 0 :(得分:1)

Font类允许您指定字体大小。

因此,要创建字体,您应该像这样编码:

Font f = new Font("serif", Font.PLAIN, fontSize);

fontSize参数将决定Font的大小 所以,在这里输入你想要的字体大小..之后将字体实例变量f设置为你的JLabel实例变量,如下所示:

lblTrainPath.setFont(f);

并且具有自定义大小的组件。 你应该尝试pack()而不是frame.setSize(800,200) 将所有组件添加到框架后使用此pack(),使用setResizable(false) ... {/ p>固定尺寸​​窗口