5

私はこれを使用しようとしましたが、うまくいきません

singleplayerButton.setBounds(20, 20, 200, 100);

理由はわかりませんが、誰かがこれを手伝ってくれますか?

私の完全なページコードはこちら

package gmine;

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

public class gmine implements ActionListener {
        JFrame interfaceFrame;
        JButton singleplayerButton, multiplayerButton, optionsButton, quitButton;

        public gmine() {
                JFrame.setDefaultLookAndFeelDecorated(false);
                interfaceFrame = new JFrame("G-Mine B0.4");
                interfaceFrame.setSize(800,600);
                interfaceFrame.setLayout(new GridLayout(9,1, 20, 15));

                singleplayerButton = new JButton("SinglePLayer");
                singleplayerButton.addActionListener(this);
                interfaceFrame.add(singleplayerButton);
                singleplayerButton.setBounds(20, 20, 200, 100);

                multiplayerButton = new JButton("MultiPlayer");
                multiplayerButton.addActionListener(this);
                interfaceFrame.add(multiplayerButton);

                optionsButton = new JButton("Options");
                optionsButton.addActionListener(this);
                interfaceFrame.add(optionsButton);

                quitButton = new JButton("Quit");
                quitButton.addActionListener(this);
                interfaceFrame.add(quitButton);

                interfaceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                interfaceFrame.setVisible(true);
        }

        public void actionPerformed(ActionEvent a) {

        }

        public static void main(String[] args) {
                new gmine();
        }
}

ボタンを小さくして、ページの端に触れないようにしようとしています。

4

4 に答える 4

10

私は個人的にレイアウトマネージャーを使用します。これにより、ボタンのレイアウトをより柔軟に決定でき、コンポーネントの推奨サイズを尊重するために多大な努力を払いますが、必要に応じて自由に調整できます...

私にとって、それはGridBagLayout

ここに画像の説明を入力してください

public class ButtonsLayout {

    public static void main(String[] args) {
        new ButtonsLayout();
    }

    public ButtonsLayout() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new MenuPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class MenuPane extends JPanel {

        public MenuPane() {
            setLayout(new GridBagLayout());

            JButton singleplayerButton = new JButton("SinglePLayer");
            JButton multiplayerButton = new JButton("MultiPlayer");
            JButton optionsButton = new JButton("Options");
            JButton quitButton = new JButton("Quit");

            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            gbc.ipadx = 20;
            gbc.ipady = 20;

            add(singleplayerButton, gbc);
            gbc.gridy++;
            add(multiplayerButton, gbc);
            gbc.gridy++;
            add(optionsButton, gbc);
            gbc.gridy++;
            add(quitButton, gbc);
        }
    }
}

ここでは、とを使用しipadxて、レイアウトマネージャーを使用してコンポーネントの幅と高さを増やし、塗りつぶしを使用してすべてのコンポーネントを同じ幅にしました。ipadyGridBagConstraintsHORIZONTAL

見て

詳細については

于 2012-10-30T11:20:21.543 に答える
4
  • まず最初に を使用すると、コンポーネントLayoutManager位置とそのサイズは、コンポーネントが配置されているときに LayoutManager直接の親コンポーネントによって制御されます。
    例:
    JFrame に JButton を配置すると、JFrame の LayoutManager が位置とサイズを制御します。 JButtonの。

  • GroupLayoutまた、2005 年に NetBeans チームによって開発されたを使用することをお勧めしますWindowsBuilderPro。現在は Google から無料で使用できます。

于 2012-10-30T10:26:15.887 に答える
2

マネージャーは、GridLayoutすべてのコンポーネントに同じサイズを与えます。別のレイアウトマネージャーを使用setPreferredSize(Dimension preferredSize)してから、コンポーネントで使用してサイズを正しく設定することができます。

別の例として、JPanelを上にJFrame配置し、そこにボタンを配置することもできます。

于 2012-10-30T10:27:12.173 に答える
1

上記の回答の1つを使用しようとしました。今、プログラムは表示されません。終了するだけです。

package gmine;

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

public class gmine {
        JFrame interfaceFrame;
        JButton singleplayerButton, multiplayerButton, optionsButton, quitButton;


    public void ButtonsLayout() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("G-Mine");
                interfaceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                interfaceFrame.setLayout(new BorderLayout());
                interfaceFrame.setSize(800,600);
                interfaceFrame.add(new MenuPane());
                interfaceFrame.pack();
                interfaceFrame.setLocationRelativeTo(null);
                interfaceFrame.setVisible(true);
            }
        });
    }

    public class MenuPane extends JPanel {

        public MenuPane() {
            setLayout(new GridBagLayout());

            JButton singleplayerButton = new JButton("SinglePLayer");
            JButton multiplayerButton = new JButton("MultiPlayer");
            JButton optionsButton = new JButton("Options");
            JButton quitButton = new JButton("Quit");

            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            gbc.ipadx = 20;
            gbc.ipady = 20;

            add(singleplayerButton, gbc);
            gbc.gridy++;
            add(multiplayerButton, gbc);
            gbc.gridy++;
            add(optionsButton, gbc);
            gbc.gridy++;
            add(quitButton, gbc);
        }
    }
    public static void main(String[] args) {
        new gmine();
    }

}

于 2012-10-31T06:35:45.897 に答える