2

我有一个 Java 程序,如果我能得到一个非常具体的布局,我会更喜欢。

这就是我得到的:

JLabel JToggleButton JLabel JToggleButton

这就是我要的:

JLabel JToggleButton

JLabel JToggleButton

这是代码:

 package Main;
import javax.swing.*;

import java.awt.FlowLayout;
import java.awt.GridBagLayout;

public class SystemWindow {
    static JFrame window = new JFrame("System statistics");
    static JToggleButton button = new JToggleButton("Push me");
    static JLabel status = new JLabel("Status: ");
    static JLabel status2 = new JLabel("Status: ");
    static JToggleButton button2 = new JToggleButton("Push me");
    static FlowLayout layout = new FlowLayout();
    public static void openWindow(){
    window.setLayout(new GridBagLayout());
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.add(status);
    window.add(button);
    window.add(status2);
    window.add(button2);
    window.setSize(100, 100);
    window.pack();
    window.setSize(200,70);
    window.setVisible(true);
    while(true){
        status.setText("Status: "+button.isSelected());
            status2.setText("Status: "+button2.isSelected());
        }


    }
}

ps:在eclipse里写了代码。

4

3 回答 3

1

您可以使用 GridLayout 来指定行、列和间距

即添加一个带有gridlayout的jpanel并在这个面板中添加这些元素

new JPanel(new GridLayout(2,2,5,5));

第一个参数是行,第二个是列,其他是控件之间的水平和垂直间距

我想这行得通

JPanel panel = new JPanel(new GridLayout(2,2,5,5));
window.add(panel);
panel.add(status);
panel.add(button);
panel.add(status2);
panel.add(button2);
于 2013-10-30T09:02:00.800 回答
0

您得到的行为是FlowLayout. 在此处阅读更多相关信息。在此处阅读更多关于布局的信息,然后选择您喜欢的布局。

于 2013-10-30T09:03:50.083 回答
-1

当您使用GridBayLayout时,您必须在向容器添加控件时提供一些位置约束。在这里你有完整的指南。作为 MigLayout 的第 3 方布局管理器也应该满足您的需求。

   while(true){
    status.setText("Status: "+button.isSelected());
        status2.setText("Status: "+button2.isSelected());
    }

由于该代码,您的计算机将爆炸:)

于 2013-10-30T09:04:38.083 回答