小编PEl*_*hen的帖子

Java - 在GroupLayout中混合组件大小

我正在尝试为计算器GUI安排两组按钮.每个人都使用GroupLayout来制作它们.一组是数字(和"."),另一组是操作按钮.这基本上有效但如果其中一个按钮具有双倍长度(例如我的操作集上的等号按钮),则会抛出其他按钮.我将使用操作集作为示例.有两列和四行按钮.最后一行只有一个按钮 - 等于.我希望在两列上进行双倍长度拉伸.目前,当我希望第二列位于其上时,它只是将第二列推到它的末端.

这是布局的代码 - operLayout是操作布局的名称,第一行是左右括号,第二行是+和 - ,第三行是*和/,最后一行是等于.每个按钮在其他地方都设置了minimumSize(它们都是相同的,除了equals是两倍长).

operLayout.setAutoCreateGaps(true);
operLayout.setAutoCreateContainerGaps(true);
operLayout.setVerticalGroup(operLayout
        .createSequentialGroup()
        .addGroup(
operLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(leftBracket)
                            .addComponent(rightBracket))
            .addGroup(operLayout.createParallelGroup().addComponent(add).addComponent(subtract))
            .addGroup(operLayout.createParallelGroup().addComponent(multiply).addComponent(divide))
            .addGroup(operLayout.createParallelGroup().addComponent(equals)));
    operLayout.setHorizontalGroup(operLayout
            .createSequentialGroup()
            .addGroup(
                    operLayout.createParallelGroup().addComponent(leftBracket).addComponent(add)
                            .addComponent(multiply).addComponent(equals))
            .addGroup(
                    operLayout.createParallelGroup().addComponent(rightBracket).addComponent(subtract)
                            .addComponent(divide)));
Run Code Online (Sandbox Code Playgroud)

我明白为什么会这样,但我不知道如何解决这个问题.有一个简单的方法吗?或者我应该改变我的方式吗?谢谢

java swing components grouplayout preferredsize

5
推荐指数
1
解决办法
842
查看次数

Swing - Thread.sleep()停止JTextField.setText()工作

可能重复:
对单个线程使用sleep()

使用Thread.sleep()时,我遇到了JTextField.setText()的问题.这是我正在制作的基本计算器.当输入字段中的输入格式不正确时,我希望"INPUT ERROR"在输出字段中出现5秒钟,然后清除它.当我只将文本设置为"INPUT ERROR"并打印出中间的文本时,setText()方法确实有效,我发现它确实可以同时使用它和setText("").当我在它们之间放置Thread.sleep()时会出现问题.这是代码的SSCCE版本:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;
import javax.swing.*;

public class Calc {
    static Calc calc = new Calc();

    public static void main(String args[]) {
        GUI gui = calc.new GUI();
    }

    public class GUI implements ActionListener {

        private JButton equals;

        private JTextField inputField, outputField;

        public GUI() {
            createFrame();
        }

        public void createFrame() {
            JFrame baseFrame = new JFrame("Calculator");
            baseFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel contentPane = new JPanel();
            BoxLayout layout = new BoxLayout(contentPane, BoxLayout.Y_AXIS);
            contentPane.setLayout(layout);
            baseFrame.setContentPane(contentPane);
            baseFrame.setSize(320, 100); …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield thread-sleep

5
推荐指数
3
解决办法
9151
查看次数