【问题标题】:How to change button size to not take up the full frame?如何更改按钮大小以不占用全帧?
【发布时间】:2021-05-31 09:07:18
【问题描述】:

我正在尝试在 JFrame 中用 Java 制作一个简单的 GUI,但无论我尝试什么,它总是看起来像这样:

如何使按钮不占据整个窗口?

这是我当前的代码:

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

public class Main extends JTextField {
    public static void main(String[] args){
        JTextField textField = new JTextField(20);
        JButton button = new JButton("text");
        Dimension bttn = new Dimension(50, 50);
        button.setPreferredSize(bttn);
        JFrame frame = new JFrame("TextDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        textField = new JTextField(20);
        frame.add(textField);
        frame.pack();
        frame.add(button);
        frame.pack();
        frame.setSize(100, 100);
        frame.setVisible(true);
    }
}

有人可以帮我吗?

【问题讨论】:

标签: java swing jframe jbutton jtextfield


【解决方案1】:

这样的?

文本字段根本没有出现的原因是JFrame(的内容窗格)默认有一个BorderLayout。无约束添加到边框布局的组件被添加到CENTER,只能容纳单个组件。

改为将单个组件设为JPanel。面板默认为FlowLayout(可以显示多个组件)。将按钮和文本字段添加到面板。

【讨论】:

    【解决方案2】:

    您可以使用以下命令设置按钮大小。

    button.setBounds(100, 100, 100, 80);
    

    【讨论】:

    • 这行不通。默认情况下,Swing 使用布局管理器。布局管理器为按钮提供大小/位置。
    • Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同的语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
    【解决方案3】:

    这里是关于 setbounds 的简介

    setBounds(int x-coordinate, int y-coordinate, int width, int height)
    

    https://www.tutorialspoint.com/what-is-the-use-of-setbounds-method-in-java

    你也可以使用button.setSize(x,y); button.setLocation(x,y);

    【讨论】:

    • Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同的语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
    • 谢谢你也帮我填写
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多