java - FlowLayout 对齐方式更改在 Swing 中不直接可见

标签 java swing layout-manager flowlayout

当我更改当前在 SWING 中可见的组件的布局管理器的属性时,这些更改不可见。如果我调整整个框架的大小,更改就会变得可见。

如何解决这个问题?我已经尝试过 revalidate() 和 friend ,但没有成功。另外,在更改布局属性的行之后的 LayoutFun.this.revalidate(); (mgr.setAlignment(align);) 也没有任何帮助。

简短的 self 解释示例 - 当您按下按钮时,它的对齐方式应该改变。相反,什么也没有发生(在我的计算机上),只有当我调整整个框架的大小时,更改才会可见

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;

public class LayoutFun extends JFrame {

    public LayoutFun() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final FlowLayout mgr = new FlowLayout(FlowLayout.CENTER);
        setLayout(mgr);
        add(new JButton(new AbstractAction("Other alignment") {

            @Override
            public void actionPerformed(ActionEvent e) {
                int align = mgr.getAlignment();
                switch (align) {
                    case FlowLayout.CENTER:
                        align = FlowLayout.LEFT;
                        break;
                    case FlowLayout.LEFT:
                        align = FlowLayout.RIGHT;
                        break;
                    default:
                    case FlowLayout.RIGHT:
                        align = FlowLayout.CENTER;
                        break;
                }
                mgr.setAlignment(align);
            }
        }));
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                LayoutFun lst = new LayoutFun();
                lst.setVisible(true);
                lst.setSize(600, 400);
            }
        });
    }
}

最佳答案

验证并重新绘制框架的可见部分,即ContentPane

getContentPane().revalidate();
getContentPane().repaint();

关于java - FlowLayout 对齐方式更改在 Swing 中不直接可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900467/

相关文章:

java - 创建一个星号框,里面有一个 X

java - 向 jList Java 添加组件

java - 将 jTextPane 文本复制到剪贴板

java - 框架中面板的固定尺寸

java - 如何使用 JDBC 连接连接到 Oracle DB,而无需在我的计算机中打开 Oracle

文件内容中的java正则表达式

java - 在 GridBagLayout 中布局组件不符合预期

Java Swing - 如何堆叠用户名文本字段和密码文本字段

java - 以下技术获取 RequestContext 是否正确

java - 缩放效果未显示在框架中