2016-06-19 11 views
0

Ich habe ein Problem, dass ich wirklich nicht wissen, wie Sie wahrscheinlich eine funktionale Schaltflächen in Java Swing GUI erstellen (ich denke, das ist, wie ich es nennen sollte). Ich erstelle eine print-Anweisung, um zu überprüfen, ob meine Schaltflächen funktionieren oder nicht, und es funktioniert nicht. Hier ist mein Code.Java Buttons funktioniert nicht

import javax.swing.JFrame; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import java.awt.*; 
import java.awt.event.*; 


/** 
* Create a JFrame to hold our beautiful drawings. 
*/ 
public class Jan1UI implements ActionListener 
{ 
    /** 
    * Creates a JFrame and adds our drawings 
    * 
    * @param args not used 
    */ 

     static JFrame frame = new JFrame(); 
     static JButton nextBut = new JButton("NEXT"); 
     static NextDayComponents nextDaycomponent = new NextDayComponents(); 


    public static void main(String[] args) 
    { 
     //Set up the JFrame 

     nextBut.setBounds(860, 540, 100, 40); 
     /*nextBut.setOpaque(false); 
     nextBut.setContentAreaFilled(false); 
     nextBut.setBorderPainted(false); 
     */ 
     frame.setSize(1920, 1080); 
     frame.setTitle("Jan1UI demo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setBackground(Color.WHITE); 
     frame.setVisible(true); 
     frame.add(nextBut); 
     frame.add(nextDaycomponent); 









    } 
    public void actionPerformed(ActionEvent e) 
     { 
     JButton b = (JButton)e.getSource(); 

     if (b == nextBut) 
     { 
      System.out.println("ok"); 
     } 

     } 
    } 
/*static class Butt implements ActionListener 
{ 
}*/ 

Antwort

0

Sie benötigen eine Aktion Hörer auf die Schaltfläche hinzufügen, aber kann nicht tun, dass in Haupt, da es eine statische Methode ist. Erstellen Sie stattdessen einen Konstruktor, um die Arbeit ähnlich wie folgt auszuführen:

public class Jan1UI implements ActionListener 
{ 
    public static void main(String[] args) 
    { 
    Jan1UI ui = new Jan1UI(); 
    } 

    public Jan1UI() 
    { 
    JFrame frame = new JFrame(); 

    JButton nextBut = new JButton("NEXT"); 
    nextBut.setBounds(860, 540, 100, 40); 
    nextBut.addActionListener(this); 

    frame.setSize(1920, 1080); 
    frame.setTitle("Jan1UI demo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setBackground(Color.WHITE); 
    frame.setVisible(true); 
    frame.add(nextBut); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
    System.out.println("ok"); 
    } 
} 
+0

Es sieht so aus, als ob es funktioniert füllen Sie den ganzen Bildschirm wieder. Aber ich denke, dass ich das selbst beheben kann. Vielen Dank für beide antworten so schnell und geben Sie mir die vollständige Lösung. –

+0

Ich entfernte die 'NextDayComponents' aus dem Beispiel, wie nicht diesen Code - aber davon ausgehen füllt den Hauptbereich aus – lostbard

0

Sie müssen eine Action auf die Schaltfläche gebunden:

nextBut.setBounds(860, 540, 100, 40); 
nextBut.addActionListener(new Jan1UI()); 
+0

Vielen Dank, aber können Sie mir sagen, wo soll ich das bitte tun? –

+0

Exception in thread "main" java.lang.Error: Ungelöste Kompilation Problem: \t Kann dies nicht in einem statischen Kontext \t bei Jan1UI.main (Jan1UI.java:41) verwendet –

+0

meine bearbeiten Siehe, gleich nach 'nextBut. setBounds (... '. Wahrscheinlich sollten Sie Ihren Code umgestalten. Es gibt viele Swing-Beispiele, die das im üblichen Stil erklären. – PeterMmm