可以将这个Java GUI简化一下



我正在编写一个Java GUI应用程序,它是这样的:

JPanel main = new JPanel(new GridLayout(1, 1));
JPanel buttonPanel = new JPanel();
buttonPanel.add(button);
main.add(buttonPanel)

我想添加一个按钮到网格,但我希望它在网格面板的中心。将按钮添加到另一个JPanel允许我将其居中到网格。

有更短的方法吗?

例如:

JPanel main = new JPanel(new GridLayout(1, 1));
JPanel buttonPanel = JPanel();
main.add(new JPanel().add(button));

这对我不起作用。

谢谢:)

我同意其他评论者的看法,即减少代码行数可能没有您想象的那么必要:一般来说,您的目标应该是减少代码复杂性,而不是代码长度,尽量减少长度通常会导致代码更复杂/难以理解,而不是更简单。

也就是说,应用基本的OO原则可以使您在保持(如果不是增加)代码清晰度的同时缩短代码:

 class CenteredContentPanel extends JPanel { 
      CenteredContentPanel(JComponent addTo){
          this.setLayout(new GridLayout(1,1)); 
          JPanel parentPanel = new JPanel();
          parentPanel.add(addTo);
          this.add(parentPanel);
      }
 }

现在,您可以使用一行代码向父容器添加任意多的这些元素:

  JPanel main = new JPanel();
  main.add(new CenteredContentPanel(button));
  //repeat above line to add as many "centered" components as you need to

(代码是未经测试的,因为我没有访问IDE的时刻,但你得到的要点…)

你需要添加main到框架:

      add(main.add(new JPanel().add(button)));

这对我很好:

     import java.awt.GridLayout;
     import javax.swing.JButton;
     import javax.swing.JFrame;
     import javax.swing.JPanel;
      public class MyFrameClass extends JFrame 
      {
    public MyFrameClass(){
   JPanel main = new JPanel(new GridLayout(1, 1));
   JButton button = new JButton();
   add(main.add(new JPanel().add(button)));
   setSize(800,600);
   setVisible(true);

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

相关内容

  • 没有找到相关文章

最新更新