繁体   English   中英

Java-如何使用Swing编辑按钮的大小和位置?

[英]Java - How can I edit the size and position of a button using Swing?

我有以下代码,但我想构造一些特定大小的按钮。 我只是想知道如何执行此操作,因为我已经对其进行了Google搜索,发现了几种不同的方法,但似乎没有一种有效。 有什么建议吗?

import javax.swing.*;

public class GUI {

    public static void main(String[] args) {

        JFrame window = new JFrame();
        window.setSize(500, 500);
        window.setTitle("My Application");

        JButton button = new JButton("click me");
        window.add(button);

        window.setVisible(true);

    }

}

根据您的问题,我认为您正在尝试使按钮适合窗口的大小。 在这种情况下,您将使用window.add(button, BorderLayout.CENTER);

如果您尝试使用多个按钮,则需要使用布局。 这里可以找到使用布局制作GUI的教程。

通常,您可以使用setLocationsetSize方法。 但是,最好使用布局管理器。 检查使用布局管理器教程。 在您的情况下,默认情况下使用BorderLayout 如果需要绝对布局,可以设置它:

window.setLayout(null);

然后,您必须指定该容器中每个组件的大小和位置。

编辑:

请注意,使用绝对布局可能很复杂,通常可以避免。 有关一些想法,请参见《布局管理器视觉指南》

看来您正在迈出第一步。 您要问的问题属于GUI设计的一个区域,称为布局。 确切地说,如何设置按钮的位置取决于布局。 我建议您找到一个摇摆教程并运行它。 我从Java Swing Trail开始: http : //download.oracle.com/javase/tutorial/uiswing

在Java api文档中查找BorderLayout和GridLayout。 它们是最简单的开始。

您确实可以用许多不同的方式更改JButton的大小,但是在摆动中这样做并显式地将大小值赋予不同的组件根本不是一个好习惯。 您必须更好地开始学习布局管理器 如果您还将了解Swing中的并发性 ,那么它将更加明智。

JFrame的默认布局是BorderLayout,JPanel的默认布局是FlowLayout。 但是对于您的问题,我能想到的最简单的方法如下:

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.SwingUtilities;

public class GUI {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    /*
                     * THe default Layout for the JFrame is the BorderLayout.
                     * Since you said you have some buttons, so I am giving
                     * you some idea how various buttons can be added to the 
                     * JFrame, with different values.
                     */
                    JFrame window = new JFrame();
                    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    window.setLocationRelativeTo(null);
                    window.setTitle("My Application");

                    JButton button1 = new JButton("Button1");
                    window.add(button1, BorderLayout.PAGE_START);                   

                    JButton button2 = new JButton("Button2");
                    window.add(button2, BorderLayout.WEST);

                    JButton button3 = new JButton("Button3");
                    window.add(button3, BorderLayout.CENTER);

                    JButton button4 = new JButton("Button4");
                    window.add(button4, BorderLayout.EAST);

                    JButton button5 = new JButton("Button5");
                    window.add(button5, BorderLayout.PAGE_END);

                    window.pack();
                    window.setVisible(true);
                }
            });

    }

}

希望这可以对您有所帮助。

问候

JButton扩展了AbstractButton ,而后者又扩展了JComponent ,因此,与继承的情况一样,您可以使用JComponent提供的所有方法。

您应该考虑的相关方法是:

setMaximumSize(Dimension maximumSize) Sets the maximum size of this component to a constant value.
setMinimumSize(Dimension minimumSize) Sets the minimum size of this component to a constant value.

此外, JComponent扩展了Component ,它提供了并且可以使用,

setSize(Dimension d) Resizes this component so that it has width d.width and height d.height.
setSize(int width, int height) Resizes this component so that it has width width and height height.

参见下面的继承:

java.awt.Component
    java.awt.Container
        javax.swing.JComponent
            javax.swing.AbstractButton
                javax.swing.JButton

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM