Swing组件不可见

时间:2016-12-26 11:23:49

标签: java intellij-idea

当我运行我的代码时,只有空框架。要查看JButton和JTextFields,我必须在它们可见之前进行搜索并单击它们。我在互联网上到处搜索,但我一无所获。我还将可见性设置为true并添加了JComponents。这是我的代码:

Frame Fenster = new Frame();

这就是......

package me.JavaProgramm;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class Frame extends JFrame {
    private JButton bChange;
    private JTextField tvonEur;
    private JTextField tzuOCur; //andere Währung (other Currency)
    private JTextField tzuEur;
    private JTextField tvonOCur;
    private JComboBox cbCur; //Wärhung wählen
    private String curName;
    private double faktorUSD;
    private double faktorGBP;

    private static String[] comboCur = {"USD", "GBP"};

    public Frame() {
        setLayout(null);
        setVisible(true);
        setSize(400, 400);
        setTitle("Währungsrechner");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setAlwaysOnTop(true);
        setResizable(false);

        Font schrift = new Font("Serif", Font.PLAIN + Font.ITALIC, 30);

        tvonEur = new JTextField("Euro");
        tvonEur.setSize(80, 25);
        tvonEur.setLocation(20, 50);
        tvonEur.requestFocusInWindow();
        tvonEur.selectAll();

        tzuEur = new JTextField("Euro");
        tzuEur.setSize(80, 25);
        tzuEur.setLocation(20, 150);
        tzuEur.requestFocusInWindow();
        tzuEur.selectAll();

        bChange = new JButton("Euro zu US-Dollar");
        bChange.setSize(120, 25);
        bChange.setLocation(110, 50);

        tzuOCur = new JTextField("US-Dollar");
        tzuOCur.setSize(80, 25);
        tzuOCur.setLocation(240, 50);
        tzuOCur.requestFocusInWindow();
        tzuOCur.selectAll();

        tvonOCur = new JTextField("US-Dollar");
        tvonOCur.setSize(80, 25);
        tvonOCur.setLocation(240, 50);
        tvonOCur.requestFocusInWindow();
        tvonOCur.selectAll();

        cbCur = new JComboBox(comboCur);
        cbCur.setSize(100, 20);
        cbCur.setLocation(100, 100);

        tvonEur.setVisible(true);
        tzuEur.setVisible(true);
        tzuOCur.setVisible(true);
        tvonOCur.setVisible(true);
        bChange.setVisible(true);
        cbCur.setVisible(true);

        add(tvonEur);
        add(bChange);
        add(tzuOCur);
        add(cbCur);

        Currency currency = new Currency();

        String strUSD = currency.convertUSD();
        try {
            NumberFormat formatUSD = NumberFormat.getInstance(Locale.GERMANY);
            Number numberUSD = formatUSD.parse(strUSD);
            faktorUSD = numberUSD.doubleValue();
            System.out.println(faktorUSD);
        } catch (ParseException e) {
            System.out.println(e);
        }

        String strGBP = currency.convertGBP();
        try {
            NumberFormat formatGBP = NumberFormat.getInstance(Locale.GERMANY);
            Number numberGBP = formatGBP.parse(strGBP);
            faktorGBP = numberGBP.doubleValue();
            System.out.println(faktorGBP);
        } catch (ParseException e) {
            System.out.println(e);
        }

        cbCur.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cbCur = (JComboBox) e.getSource();
                curName = (String) cbCur.getSelectedItem();
                if (curName == "USD") {
                    tzuOCur.setText("US-Dollar");
                } else if (curName == "GBP") {
                    tzuOCur.setText("British-Pound");
                }
            }
        });

        bChange.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (curName == "USD") {
                    try {
                        Double doubleEUR = Double.parseDouble(tvonEur.getText());
                        Double doubleUSD = doubleEUR * faktorUSD;
                        tzuOCur.setText(Double.toString(roundScale3(doubleUSD)));
                    } catch (NumberFormatException nfe) {
                        System.out.println("Gebe einen richten Wert ein!");
                    }
                } else if (curName == "GBP") {
                    try {
                        Double doubleEUR = Double.parseDouble(tvonEur.getText());
                        Double doubleGBP = doubleEUR * faktorGBP;
                        tzuOCur.setText(Double.toString(roundScale3(doubleGBP)));
                    } catch (NumberFormatException nfe) {
                        System.out.println("Gebe einen richten Wert ein!");
                    }
                }
            }
        });
    }

    public static double roundScale3(double d) {
        return Math.rint(d * 1000) / 1000.;
    }
}

1 个答案:

答案 0 :(得分:0)

将子项添加到父容器后尝试移动Articles::whereYear('created_at', date('Y'))->get();

通常使用Swing,在事件调度线程中放置更新可见组件的代码被认为是一种很好的做法,如下所示:

int sub[3][3];
memcpy(sub, board[1][2], sizeof sub);