首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java FlowLayout

Java FlowLayout
EN

Stack Overflow用户
提问于 2016-07-31 23:45:34
回答 4查看 1.3K关注 0票数 1

我正在写一些Java代码,允许用户看到一个带有JLabelJTextFieldJButton的框架。

我希望这个JLabel被称为"Count“,但我对FlowLayout有一个问题。我希望界面看起来像这样:

相反,我有这样的想法:

这是我的代码:

代码语言:javascript
复制
package modul1_Interfate_Grafice;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Exercitiu04 implements ActionListener {
private JFrame frame;
private JLabel labelCount;
private JTextField tfCount;
private JButton buttonCount;
private int count = 0;

    public void go() {
        frame = new JFrame("Java Counter");
        labelCount = new JLabel("Counter");
        labelCount.setLayout(new FlowLayout());
        frame.getContentPane().add(BorderLayout.CENTER, labelCount);

        tfCount = new JTextField(count + " ", 10);
        tfCount.setEditable(false);
        labelCount.add(tfCount);

        buttonCount = new JButton("Count");
        labelCount.add(buttonCount);
        buttonCount.addActionListener(this);

        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(350, 150);
        frame.setLocation(400, 200);
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        count++;
        tfCount.setText(count + "");
    }

    public static void main(String[] args) {
        Exercitiu04 a  = new Exercitiu04();
        a.go();
    }
}
EN

回答 4

Stack Overflow用户

发布于 2016-08-01 00:03:52

解决它。

而不是labelCount.setLayout(new FlowLayout());`我应该有

代码语言:javascript
复制
frame.setLayout(new FlowLayout());
票数 0
EN

Stack Overflow用户

发布于 2016-08-01 23:14:32

通过对JLabel类的描述,

JLabel是:

短文本字符串和/或图像的显示区域。

但是这里是:labelCount.add(tfCount),这里是labelCount.add(buttonCount),您试图将一个文本字段和一个按钮放入标签中。在这种情况下,按钮和文本字段的位置由FlowLayout控制,但标签中的文本位置不受控制。

相反,您应该将所有元素放在公共JPanel中,如下所示:

代码语言:javascript
复制
    ...
    frame = new JFrame("Java Counter");
    frame.setLayout(new BorderLayout());

    JPanel wrapper = new JPanel(); // JPanel has FlowLayout by default

    labelCount = new JLabel("Counter");
    labelCount.setLayout(new FlowLayout());
    wrapper.add(labelCount);

    tfCount = new JTextField(count + " ", 10);
    tfCount.setEditable(false);
    wrapper.add(tfCount);

    buttonCount = new JButton("Count");
    buttonCount.addActionListener(this);
    wrapper.add(buttonCount);

    frame.add(BorderLayout.CENTER, wrapper);
    ...

而且,就像MasterBlaster说的,你应该把swing方法放在EDT中。

票数 0
EN

Stack Overflow用户

发布于 2016-08-26 07:33:33

关于FlowLayout,您只需要知道两件事

a)它是JPanel组件的默认布局管理器b)它没有任何用处。

这种琐碎的布局不能用FlowLayout实现。在Swing中进行布局时,您应该熟悉一些功能强大的布局管理器。我推荐MigLayoutGroupLayout

代码语言:javascript
复制
package com.zetcode;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout;

/*
Simple UI with a MigLayout manager.
Author Jan Bodnar
Website zetcode.com
*/

public class MigLayoutCounterEx extends JFrame {

    public MigLayoutCounterEx() {

        initUI();
    }

    private void initUI() {

        JLabel lbl = new JLabel("Counter");
        JTextField field = new JTextField(10);
        JButton btn = new JButton("Count");

        createLayout(lbl, field, btn);

        setTitle("Java Counter");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private void createLayout(JComponent... arg) {

        setLayout(new MigLayout());

        add(arg[0]);
        add(arg[1]);
        add(arg[2]);

        pack();
    }    

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {
            MigLayoutCounterEx ex = new MigLayoutCounterEx();
            ex.setVisible(true);
        });        
    }
}

这个例子很简单。您只需将这三个组件放入单元格。

截图:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38685662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档