【问题标题】:Cannot resize JButton无法调整 JButton 的大小
【发布时间】:2017-08-04 02:34:04
【问题描述】:

我正在尝试使用 swing 编写一个程序,以便左侧有一个 JList,右侧有五个 JButton。所以我为一个 JButton 编写了代码,但我无法调整它的大小或移动它。任何帮助,将不胜感激。非常感谢!!这是我的代码:

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

public class GenericFrame {
    private JFrame mainFrame;
    private JPanel controlPanel;

    public GenericFrame(){
      prepareGUI();
    }

    private void prepareGUI(){
      mainFrame = new JFrame("Generic Frame");
      mainFrame.setSize(800,400);
      mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mainFrame.setLayout(new FlowLayout());

      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());
      controlPanel.setSize(800,400);

      mainFrame.add(controlPanel);
      mainFrame.setVisible(true);
    }

    public void showButtons(){
      JButton showButton = new JButton("Show");
      showButton.addActionListener(new ActionListener() {
                                 public void actionPerformed(ActionEvent e) {
                                    System.out.println("hello");
                                 }
                               });

      showButton.setLayout(new BorderLayout());
      showButton.setLocation(0, 200);


      JButton viewButton = new JButton("view");
      viewButton.setLocation(showButton.getX(), showButton.getY() + 100);


      controlPanel.add(showButton);
      controlPanel.add(viewButton);
    }


    public static void main(String[] args){
      GenericFrame  swingControlDemo = new GenericFrame();
      swingControlDemo.showButtons();
    }

    }

为了记录,我正在使用 IntelliJ。我在具有不同操作系统的多台机器上尝试了此操作,但此错误仍然存​​在。请帮帮我。

【问题讨论】:

    标签: java swing intellij-idea


    【解决方案1】:

    我正在尝试使用 swing 编写一个程序,以便左侧有一个 JList,右侧有五个 JButton。

    因此,在使用布局管理器时,您通常需要使用嵌套面板。因此,在您的情况下,我建议您保留框架的默认 BorderLayout 并将 JList 添加到框架中,并将包含 5 个按钮的面板添加到框架中。基本代码是:

    JList list = new JList(...);
    frame.add(new JScrollPane( list ), BorderLayout.CENTER);
    
    JPanel buttonPanel = new JPanel(...);
    buttonPanel.add( button1 );
    frame.add(buttonPanel, BorderLayout, BorderLayout.LINE_END);
    

    所以知道您的下一个选择是用于“按钮面板”的布局管理器。也许是一个垂直的 BoxLayout?阅读 Layout Manager 上的 Swing 教程部分,了解每个布局管理器的更多信息和示例。

    不要尝试在组件上使用 setSize() 或 setLocation()。设置这些属性是布局管理器的工作。

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      相关资源
      最近更新 更多