Java Swing GUI 似乎没有

Java Swing GUI doesn't seem

我正在尝试通过手写而不是使用表单生成器来制作基于 BorderLayoutGridLayout 的 GUI。因此,我很可能会跳过代码中的一部分。它已加载但似乎没有。

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.InetAddress;
import javax.swing.*;
import javax.swing.border.EmptyBorder;


class PanelDemo {

    JButton jbtnUpArrowFirst;
    JButton jbtnDownArrowFirst;
    JButton jbtnUpArrowSec;
    JButton jbtnDownArrowSec;
    JButton jbtnUpArrowThird;
    JButton jbtnDownArrowThird;

    JLabel jlblLedUpFirst;
    JLabel jlblLedDownFirst;
    JLabel jlblLedUpSec;
    JLabel jlblLedDownSec;
    JLabel jlblLedUpThird;
    JLabel jlblLedDownThird;

    private JComponent ui = null;
    private Insets buttonMargin = new Insets(10,10,10,10);

    PanelDemo() throws IOException {

        InitComponents();
    }

    private void InitComponents() {

        if (ui != null) return;

        ui = new JPanel(new BorderLayout(4,4));
        ui.setBorder(new EmptyBorder(4,4,4,4));

        int gap = 5;


        JPanel jpnl = new JPanel(new GridLayout(2, 4, gap, gap));
        jpnl.setBorder(new EmptyBorder(0, 0, 0, 50));
        jpnl.setOpaque(true);
        jpnl.setBorder(
                BorderFactory.createLineBorder(Color.BLUE));


        JPanel jpnl2 = new JPanel(new GridLayout(2, 2, gap, gap));
        jpnl2.setOpaque(true);
        jpnl2.setBorder(
                BorderFactory.createLineBorder(Color.RED));





        jbtnUpArrowFirst = new JButton("upfirst" ,new ImageIcon("/Users/Jack/Desktop/up.png"));
        jbtnUpArrowFirst.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnUpArrowFirst.setHorizontalTextPosition(SwingConstants.CENTER);

        jbtnDownArrowFirst = new JButton("downfirst" ,new ImageIcon("/Users/Jack/Desktop/down.png"));
        jbtnDownArrowFirst.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnDownArrowFirst.setHorizontalTextPosition(SwingConstants.CENTER);


        jlblLedUpFirst = new JLabel("upledfirst", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedUpFirst.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedUpFirst.setHorizontalTextPosition(SwingConstants.CENTER);


        jlblLedDownFirst = new JLabel("downledfirst", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedDownFirst.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedDownFirst.setHorizontalTextPosition(SwingConstants.CENTER);


        ////////////////////////////////////////////////////////////////////////
        jbtnUpArrowSec = new JButton("upsec", new ImageIcon("/Users/Jack/Desktop/up.png"));
        jbtnUpArrowSec.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnUpArrowSec.setHorizontalTextPosition(SwingConstants.CENTER);

        jbtnDownArrowSec = new JButton("downsec" ,new ImageIcon("/Users/Jack/Desktop/down.png"));
        jbtnDownArrowSec.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnDownArrowSec.setHorizontalTextPosition(SwingConstants.CENTER);


        jlblLedUpSec = new JLabel("upledsecond", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedUpSec.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedUpSec.setHorizontalTextPosition(SwingConstants.CENTER);

        jlblLedDownSec = new JLabel("downledsec", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedDownSec.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedDownSec.setHorizontalTextPosition(SwingConstants.CENTER);
        ////////////////////////////////////////////////////////////////////////
        jbtnUpArrowThird = new JButton("upthirt", new ImageIcon("/Users/Jack/Desktop/up.png"));
        jbtnUpArrowThird.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnUpArrowThird.setHorizontalTextPosition(SwingConstants.CENTER);

        jbtnDownArrowThird = new JButton("downthird" ,new ImageIcon("/Users/Jack/Desktop/down.png"));
        jbtnDownArrowThird.setVerticalTextPosition(SwingConstants.BOTTOM);
        jbtnDownArrowThird.setHorizontalTextPosition(SwingConstants.CENTER);


        jlblLedUpThird = new JLabel("upledthird", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedUpThird.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedUpThird.setHorizontalTextPosition(SwingConstants.CENTER);

        jlblLedDownThird = new JLabel("downledthird", new ImageIcon("/Users/Jack/Desktop/ledOff.png"), SwingConstants.CENTER);
        jlblLedDownThird.setVerticalTextPosition(SwingConstants.BOTTOM);
        jlblLedDownThird.setHorizontalTextPosition(SwingConstants.CENTER);


        // Add the buttons and label to the panel.
        jpnl.add(jbtnUpArrowFirst);
        jpnl.add(jlblLedUpFirst);
        jpnl.add(jbtnUpArrowSec);
        jpnl.add(jlblLedUpSec);
        jpnl.add(jbtnDownArrowFirst);
        jpnl.add(jlblLedDownFirst);
        jpnl.add(jbtnDownArrowSec);
        jpnl.add(jlblLedDownSec);

        jpnl2.add(jbtnUpArrowThird);
        jpnl2.add(jlblLedUpThird);
        jpnl2.add(jbtnDownArrowThird);
        jpnl2.add(jlblLedDownThird);


        ui.add(jpnl, BorderLayout.CENTER);
        ui.add(jpnl2, BorderLayout.LINE_END);

        JFrame jfrm = new JFrame("Use Two JPanels");
        jfrm.setLocationByPlatform(true);
        jfrm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jfrm.setContentPane(getUI());
        jfrm.setMinimumSize(jfrm.getSize());
        jfrm.pack();
        jfrm.setVisible(true);

        /*jbtnUpArrowFirst.addActionListener(e -> {
            try {
                test.send("ANTSW=VERT\r\n");

                //if (test.recv().equalsIgnoreCase(""))

            } catch (IOException e1) {
                e1.printStackTrace();
            }
        });

        jbtnDownArrowFirst.addActionListener(e -> {
            try {
                test.send("ANTSW=HORZ\r\n");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        });*/

    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String args[]) {
        // Create the frame on the event dispatching thread.
        SwingUtilities.invokeLater(() -> {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    new PanelDemo();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                } catch (UnsupportedLookAndFeelException e) {
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
        });
    }
}

在将所有组件添加到 JFrame 之前,您正在调用 pack()setVisible()。将执行此操作的块移动到构造函数的末尾。

此外,我的编译器在设置动作侦听器的代码中找不到任何地方 test。我没有使用过 Java 8,所以我不知道那里出了什么问题,但 Eclipse 应该能够无错地编译它。