首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java swing按钮布局大小不匹配

Java swing按钮布局大小不匹配
EN

Stack Overflow用户
提问于 2016-03-07 02:04:38
回答 1查看 71关注 0票数 0

我试图使像一个面板按钮和一个列表选择不同的选项。但是不管我做什么,我都不能做同样的尺寸。

从我的类“动画师”,我想添加一个按钮面板到东边的JFrame。而居中将是一个动画,移动一个盒子,但它还有待创建。我想我先做了按钮面板。

我尝试过setPreferedSize(new dimension(x,y)),但是如果在button上这样做,JComboBox也会改变。而button仍然保持不变。我很困惑。

另外,在选择另一个选项之后,Jcombobox没有任何动作?不应该吗?

这是动画代码:

代码语言:javascript
运行
AI代码解释
复制
frame = new JFrame("Box Mover Calculator!");
    frame.setLayout(new BorderLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setLocationRelativeTo(null);

    buttonArea = new ButtonPanel(this); 
    boxArea = new JPanel(new GridLayout(1,1));
    frame.add(boxArea, BorderLayout.CENTER);
    frame.add(buttonArea, BorderLayout.EAST);
    frame.setVisible(true);

这是按钮面板:

代码语言:javascript
运行
AI代码解释
复制
public ButtonPanel(Animator animator) {
    super();
    //this.animator = animator;
    //setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
    buttonRow = new JPanel();
    buttonRow.setLayout(new BoxLayout(buttonRow, BoxLayout.PAGE_AXIS));
    buttonRow.setBackground(Color.CYAN);
    this.setBackground(Color.CYAN);

    button1 = new JButton("Start Animation");
    button1.addActionListener(new QuitHandler());
    button1.setBackground(Color.CYAN);
    button1.setForeground(Color.blue);
    buttonRow.add(button1);

    button2 = new JButton("Move Box");
    button2.addActionListener(new QuitHandler());
    button2.setBackground(Color.CYAN);
    button2.setForeground(Color.blue);
    button2.setOpaque(true);
    buttonRow.add(button2);

    String[] bookTitles = new String[] {"Effective Java", "Head First Java",
            "Thinking in Java", "Java for Dummies"};

    JComboBox<String> bookList = new JComboBox<>(bookTitles);

    //add to the parent container (e.g. a JFrame):
    buttonRow.add(bookList);

    //get the selected item:
    String selectedBook = (String) bookList.getSelectedItem();
    System.out.println("You seleted the book: " + selectedBook);

    //Adds all rows
    add(buttonRow);     
    setVisible(true);

}

这是快照,

EN

回答 1

Stack Overflow用户

发布于 2016-03-07 02:42:41

也许试着使用GridBagLayout,例如.

代码语言:javascript
运行
AI代码解释
复制
public class TestPane extends JPanel {

    public TestPane() {
        setLayout(new BorderLayout());
        JPanel buttonRow = new JPanel(new GridBagLayout());
        buttonRow.setBackground(Color.CYAN);
        this.setBackground(Color.CYAN);

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.fill = GridBagConstraints.HORIZONTAL;

        JButton button1 = new JButton("Start Animation");
        button1.setBackground(Color.CYAN);
        button1.setForeground(Color.blue);
        buttonRow.add(button1, gbc);

        JButton button2 = new JButton("Move Box");
        button2.setBackground(Color.CYAN);
        button2.setForeground(Color.blue);
        button2.setOpaque(true);
        buttonRow.add(button2, gbc);

        String[] bookTitles = new String[]{"Effective Java", "Head First Java",
            "Thinking in Java", "Java for Dummies"};

        JComboBox<String> bookList = new JComboBox<>(bookTitles);

        gbc.weighty = 1;
        gbc.anchor = GridBagConstraints.NORTH;
        //add to the parent container (e.g. a JFrame):
        buttonRow.add(bookList, gbc);

        //Adds all rows
        add(buttonRow);
    }

}

有关更多细节,请参见如何使用GridBagLayout

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35840826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档