java - Gui 的按钮布局问题

标签 java swing user-interface layout-manager cardlayout

我正在尝试使用流布局来制作一个以单列定向的菜单屏幕,但每当我添加按钮时,它都会将其添加到单行。

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Proj 
{
    JPanel card1,card2; 
    ActionListener listener;
    JFrame menu;
    JFrame catagories;
    JButton menu1,addOrTake,cata,payd,showd;
    //JButton 
    public Proj(){


        card2=new JPanel();


        menu = new JFrame("Card Layout");
        catagories = new JFrame();

        //final Container contentPane = menu.getContentPane();
        final CardLayout layout = new CardLayout();
        menu.setLayout(layout);
        card1=new JPanel();

        menu1 = new JButton("");
        menu1.setIcon(new ImageIcon("C:/Users/sabar/Menu.jpg"));
        menu1.setSize(60,600);
        menu1.setVisible(true);

        addOrTake = new JButton();
        addOrTake.setIcon(new ImageIcon("C:/Users/Public/Pictures/Sample       Pictures/Penguins.jpg"));

        cata = new JButton("");
        cata.setIcon(new ImageIcon("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg"));

        showd = new JButton("");
        showd.setIcon(new ImageIcon("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg"));

        payd = new JButton("");
        payd.setSize(60, 600);
        payd.setIcon(new ImageIcon("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg"));
        payd.setVisible(true);

        card1.add(menu1);
        card1.add(addOrTake);
        card1.add(cata);
        card1.add(showd);
        card1.add(payd);

        menu1.addActionListener(listener);
        addOrTake.addActionListener(listener);
        cata.addActionListener(listener);
        showd.addActionListener(listener);
        payd.addActionListener(listener);

        listener = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {}};
            // TODO Auto-generated method stub



            menu.setSize(60, 600);
            menu.setVisible(true);
            JButton poo=new JButton("Poo");
            poo.setSize(60,600);
            card2.add((poo));
            card2.add(new JButton("Pee"));
            card2.add(new JButton("Per"));
            card2.add(new JButton("POt"));
            card2.setVisible(false);
            menu.add(card2);

            menu.add(card1);
            catagories.pack();
            menu.pack();
            card1.setVisible(false);


    }
    public static void main(String[]args)
    {
        Proj poop =new Proj();
    }
}

最佳答案

问题:

  • 您正在将组件添加到菜单(使用 CardLayout 的容器),而不使用第二个参数字符串常量。如果没有这个,可能很难轻松地交换“卡”(组件)。
  • 如果您想要单列类型的布局,则需要使用允许此操作的布局管理器,而 JPanel 默认布局不是这样。更好的选择:
    • GridLayout(0, 1) 用于可变行数、一列
    • BoxLayout(容器,BoxLayout.PAGE_AXIS)
    • 具有正确 GridBagConstraint gridx 和 gridy 属性的 GridBagLayout。

关于java - Gui 的按钮布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611123/

相关文章:

macos - Mac 可视化补丁工具

java - 使用 SimpleXml 和 Retrofit 的 Android RSS 阅读器 - 媒体 :thumbnail parse issue

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

java - 在文本文件中逐行单词

java - Java中的计算方法计算器产生空字符串错误

css - JavaFX。无法删除 TabPane 右侧的多余空间

user-interface - mask UI 图像/原始图像

用于函数调用的 Java 正则表达式

java - 在 Exchange 中使用 JavaMail/Android 通过 IMAP 获取联系人

java - 无法使用 M2Eclipse 下载 jar(0.10.0,使用 Maven 3)