中心组件和调整JFrame的大小

时间:2015-08-21 13:19:53

标签: java swing user-interface layout-manager

我正在创建一个java GUI,其中有一些垂直框。在这些盒子里面,有一些按钮和标签。我试图将按钮和标签放在中心,但不起作用! 我正在使用此代码在中心设置标签。

JLabel update = new JLabel("update");
update.setHorizontalTextPosition(CENTER);

其中 update 是我的垂直框的最后一个组件。

另一个问题是我需要窗口自动调整大小,具体取决于我的GUI中的更改(因为它是动态的)! 我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

  

我正在尝试将按钮和标签放在中间但不起作用!我正在使用此代码在中心设置标签。

有几种方法可以做到这一点,但最简单的方法是使用GridBagLayout。 如果box / container(希望从JPanel或JComponent扩展)使用GridBagLayout,并使用GridBagConstraints将组件添加到容器中:gridX和gridY设置,但是weightX和weightY设置为默认值0,那些添加的组件将居中容器。

我无法显示代码,因为我不了解您当前正在使用的代码或您观察到的/所需图形的图像。如果您需要更多帮助,请编辑您的问题并提供更多相关信息。

  

另一个问题是我需要窗口自动调整大小,具体取决于我的GUI中的更改(因为它是动态的)!我怎么能做到这一点?

这将取决于您的GUI正在使用的布局管理器,这是我们目前尚不了解的。同样,如果您仍然遇到问题,请创建并发布您的Minimal, Complete, and Verifiable Example Program

例如,以下具有居中按钮和JLabel文本的可调整大小的GUI:

enter image description here

由以下代码创建:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:variable name="SYS" select="//system" />
   <xsl:template match="/">
      <FindReceiptDetailScreenResults>
         <xsl:choose>
            <xsl:when test="Fault">
               <xsl:apply-templates select="Fault" />
            </xsl:when>
            <xsl:otherwise>
               <xsl:apply-templates select="//results" />
            </xsl:otherwise>
         </xsl:choose>
      </FindReceiptDetailScreenResults>
   </xsl:template>
   <xsl:template match="Fault">
      <xsl:choose>
         <xsl:when test="faultactor = 'Amisys'">
            <PQMessage>not found</PQMessage>
         </xsl:when>
         <xsl:otherwise>
            <PQMessage>
               <xsl:value-of select="faultstring" />
            </PQMessage>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>
   <xsl:template match="//results">
      <xsl:choose>
         <xsl:when test="$SYS = 'Amisys'">
            <xsl:if test="PQMessage[string(.)]">
               <PQMessage>
                  <xsl:value-of select="PQMessage[string(.)]" />
               </PQMessage>
            </xsl:if>
            <prvAssocList>
               <xsl:for-each select="/response/results/ver:receiptDetailHistoryRS/ver:receiptDetails/ver:receiptDetail[1]">
                  <prvAssocInfo>
                     <prvAssocCode>
                        <xsl:value-of select="receiptNumber" />
                     </prvAssocCode>
                  </prvAssocInfo>
               </xsl:for-each>
            </prvAssocList>
         </xsl:when>
      </xsl:choose>
   </xsl:template>
</xsl:stylesheet>