2016-08-03 17 views
0

Ich versuche, eine GUI basierend auf BorderLayout und GridLayout von Hand schreiben nicht mit einem Formular-Generator. Aus diesem Grund überspringe ich wahrscheinlich einen Teil des Codes. Es ist geladen, aber nicht zu sehen.Java Swing GUI scheint nicht

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

Sollten Sie nicht irgendwann "setVisible()" oder etwas in Ihrem Panel aufrufen? – GhostCat

+0

aber ich habe bereits die Sichtbarkeit für JFrame eingestellt warum brauche ich dazu? @GhostCat – swinger

+0

Entschuldigung, ich habe den JFrame-Teil übersehen. – GhostCat

Antwort

4

Sie rufen pack() und setVisible(), bevor Sie alle Komponenten der JFrame hinzufügen. Verschieben Sie den Block, der das tut, an das Ende des Konstruktors.

Darüber hinaus kann mein Compiler test nirgendwo in dem Code finden, der Aktion Listener einrichten. Ich habe nicht mit Java 8 gearbeitet, also weiß ich nicht, was dort nicht stimmt, aber Eclipse sollte in der Lage sein, dies ohne Fehler zu kompilieren.

+0

@swinger Ich sehe, dass Sie ein neuer Benutzer sind; In SO ist es üblich, auf das Häkchen in einer Antwort zu klicken, wenn es Ihre Frage beantwortet, und es zusätzlich zu aktualisieren, wenn es hilfreich ist. Auf diese Weise wissen die Leute, dass die Frage beantwortet wird, und die Person, die sie beantwortet, bekommt Kredit. – arcy

+0

Dieser Code zeigt einen Rahmen auf meinem System an. Ich habe es in das Eclipse-Standardpaket in eine neue Klasse eingefügt, den Klassennamen so geändert, dass es nicht mit dem ersten kollidiert, den ich von dieser Frage erhalten habe, den Konstruktor korrigiert und "debug" gedrückt. Es zeigt ein Fenster mit 6 Tasten an. Wenn Sie dies nicht erhalten, liegt das an etwas anderem als an Ihrem Code. Wenn Sie Fehler haben, sagen Sie uns, was sie sind. Es würde auch helfen, wenn Sie angeben, was Sie erwarten und was Sie sehen, ist das anders; Da das erste Beispiel nichts anzeigen würde, dachte ich, dass wir einmal fertig waren. – arcy

+0

Ich verstehe nicht, warum Sie der Frage Symbole hinzugefügt haben. Was willst du passieren, was nicht passiert? – arcy