【问题标题】:Positioning of JButton in JavaJava中JButton的定位
【发布时间】:2012-10-01 00:45:24
【问题描述】:

这是非常基本的代码,但我只需要一些帮助来理解..

我有一个按钮,我想把它放在面板的东侧.. 任何建议..

    public class ButtonText { 
        public static void main(String[] args) {
            Frame frame=new Frame("Button Frame");
            Button button = new Button("Submit"); 
            frame.setLayout(new FlowLayout());
            frame.add(button, BorderLayout.EAST);
            frame.setSize(200,100);
            frame.setVisible(true);
            frame.addWindowListener(new WindowAdapter()
            {
                public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
    }

看起来像这样http://imgur.com/0GYso

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 问题是你告诉你的框架使用 FlowLayout,但期望它理解 BorderLayout 参数。只需将框架中的布局设置为 frame.setLayout(new BorderLayout());它应该可以正常工作。

标签: java user-interface button awt frame


【解决方案1】:

要使用边框布局管理器布置用户界面,您需要将框架的布局设置为 BorderLayout 的一个实例。默认的 FlowLayout 将组件从左到右设置,并在必要时设置到下一行。

frame.setLayout(new BorderLayout());
frame.add(button, BorderLayout.EAST);

【讨论】:

  • 这也适用于盒子布局吗?还是完全不同?回覆。定位?
  • 可以,但不是那么简单;您可以在添加组件之前添加水平胶水以将其粘贴到右侧而不是左侧。布局管理器都以不同的方式处理第二个方法参数; BorderLayout.EAST 不需要将对象粘贴在 FlowLayout、BoxLayout 或任何其他非预期布局中的右侧。
  • 对不起,这很痛苦,但只是另一个问题 - 我需要将此 Jbutton 放在两个 JTextField 的末尾,但它只是将它放在一个 JTextField 下。如果您明白吗?有什么建议?谢谢
  • 使用多个 JPanel 并将它们相互添加。 使用 GUI 布局设计器为您生成代码。
【解决方案2】:

您可以使用布局来定位框架中的元素。看看here。您使用的是FlowLayout,但您需要了解每个布局和定位元素的规则。

【讨论】:

    【解决方案3】:

    FlowLayout 不能使用BorderLayout 约束...

    尝试使用BorderLayout而不是FlowLayout,它应该可以正常工作。

    【讨论】:

      【解决方案4】:

      Flowlayout 不允许你这样做,你应该设置

           frame.setLayout(new BorderLayout());
           frame.add(button, BorderLayout.EAST);
      

           frame.setLayout(new BorderLayout());
           frame.add(button, BorderLayout.LINE_START);
      

      让它发挥作用,

      Flowlayout 只定位水平堆栈之类的东西。

      【讨论】:

        【解决方案5】:

        你可能想尝试这样的事情

        Frame frame=new Frame("Button Frame");
        
        Button button = new Button("Submit"); 
        
        HorizontalPanel hp = new HorizontalPanel();
        hp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
        hp.setWidth(200);
        hp.add(button);
        
        frame.add(hp);
        frame.setSize(200,100);
        frame.setVisible(true);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多