Java Swing GUI doesn't seem

眉间皱痕 提交于 2019-12-12 01:42:53

问题


I'm trying to make a GUI based on BorderLayout and GridLayout by hand-writing not with a form builder. Because of that, I'm most likely skipping a part in the code. It is loaded but not seem.

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();
                }
        });
    }
}

回答1:


You are calling pack() and setVisible() before you add all the components to the JFrame. Move the block that does that to the end of the constructor.

In addition, my compiler cannot find test anywhere in the code that is setting up action listeners. I haven't worked with Java 8, so I don't know what's wrong there, but Eclipse should be able to compile this without errors.



来源:https://stackoverflow.com/questions/38738784/java-swing-gui-doesnt-seem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!