繁体   English   中英

Java swing GUI创建

[英]Java swing GUI creation

我正在开发Java GUI,我需要:

  1. 第一行中的标签(仅一个标签)。
  2. 从第二行开始需要添加说100个按钮,该按钮可以扩展到多行(宽度不应超出可见屏幕的范围)
  3. 在新行中再添加一个标签
  4. 从下一行说出100个扩展到多行的按钮(宽度不应超出可见屏幕的范围)...
  5. [可选]如果组件超过JFrame的高度,则需要向主窗口滚动(仅垂直)

我对流布局有一个奇怪的结果,有时它坚持可见的宽度,有时甚至在一行中设置了500个按钮。

我已经尝试了每种布局以及多窗格。 仍然没有运气。

请指导.. 只需要一个想法,不需要代码

更新了代码 :对不起,这是我对stackoverflow的第一个问题

感谢您的及时答复事实上,我尝试了很多,这是一个简单的方法。

            setLayout(new FlowLayout());
    setTitle("JAVA GUI");
    setSize(500,500);
    setVisible(true);       
    add(new JLabel("row 1"));
    JPanel panel1 = new JPanel(new FlowLayout());
    for(int i=0;i<200;i++){     
        panel1.add(new JButton("b"+i));         
    }
    add(panel1);

这里panel1出现在单行中,该行超出了屏幕的可见部分。

我认为可以通过将maximumsize设置为Jframe来解决,但是不知道如何将其大小设置为FULL SCREEN。

您可以尝试MigLayout。 http://www.miglayout.com/

同样,这个问题并不是堆栈溢出的真正问题。 提出问题的一个好方法是发布您的代码,并告诉我们它有什么问题以及应该做什么。

虽然这不是“好的” stackOverflow问题的规范,但我自己对此没有任何问题。 有些人只能处理代码以外的任何东西。 我建议,如果您要发布代码,则麻烦您发布将进行编译,运行和演示情况的代码。 它确实可以帮助我们这些人了解您所看到的以及您想做的事情。

您谈论的是“行”; 请注意,行和列是诸如GridLayout和GridBagLayout之类的术语,但我认为它们不适合您所描述的内容。

在您的描述中,您没有说要滚动的内容。 看来您想要整个UI滚动,我现在假设是这样。

我会尝试使用带有垂直布局的BoxLayout的JPanel,用于整个主UI。 您将在其中添加一些内容:

第一个JPanel。

使用FlowLayout设置的另一个JPanel持有第一组按钮。

下一个JLabel的另一个JPanel

还有第四个JPanel(使用FlowLayout设置),其中包含第二组按钮。

现在,我将顶级面板放入JScrollPane中,然后将其放入Frame的CENTER部分(具有其默认的BorderLayout),然后看看会发生什么。 说实话,我不确定,但这就是我要开始的事情。

我无法告诉您,如果不运行代码,为什么有时会出现奇怪的行为。

如先前的评论所述,使用ContentPane是必经之路。 这是您想要的工作示例:

public class Test {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("JAVA GUI");

        JPanel panel1 = new JPanel();
        panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));

        int nbLines = 10;

        for (int i = 0; i < nbLines; i++) {
            JPanel linePanel = new JPanel(new FlowLayout());
            linePanel.add(new JLabel("row " + i));
            for(int j = 0; j < 50; j++) {
                 linePanel.add(new JButton("b" + j));
            }

            panel1.add(linePanel);
        }

        frame.setContentPane(panel1);

        //frame.setSize(500, 500);
        frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
        frame.pack();
        frame.setVisible(true);
    }
}

这就是我得到的:

这就是我得到的

如果要使按钮向左对齐,可以使用:

JPanel linePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM