簡體   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