2014-02-19 12 views
0
public class StatsGUI extends JFrame implements ActionListener { 


    JLabel label; 
    JLabel label2; 
    JTextField input; 
    JTextField output; 
    JButton getButton; 
    JButton exitButton; 

    public StatsGUI() 
    { 
     JPanel panel = new JPanel(); 
     label = new JLabel("Enter number"); 
     panel.add(label); 
     input = new JTextField(10); 
     input.addActionListener(this); 
     panel.add(input); 

     label2 = new JLabel("Statistics"); 
     output = new JTextField(10); 
     output.setEditable(false); 
     panel.add(output); 

     getButton = new JButton("Go"); 
     getButton.addActionListener(this); 
     panel.add(getButton); 

    exitButton = new JButton("Exit"); 
    exitButton.addActionListener(this); 
    panel.add(exitButton); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getSource() == exitButton) 
     { 
      System.exit(0); 
     } 
     else 
     { 
      String text = input.getText(); 
      output.setText(text + "COUNTER"); 
     } 


    } 

    public static void main(String[] args) 
    { 



    } 

这是我简单的GUI程序。我已将所有按钮和其他小工具放在构造函数中。但是,我不确定我应该把我的主要内容放到我的主内容中,以便让我的GUI实际显示出来。我相信我错过了一些令人难以置信的简单但我不确定的事情。帮助将不胜感激。我如何运行我的GUI?或者更准确地说,我的主要内容是什么?

+0

阅读[Swing教程](http://docs.oracle.com/javase/tutorial/uiswing/TOC.html)。本教程中的每个示例都将向您展示一种创建程序的简单方法,以便您正确启动GUI。不仅如此,本教程还将向您展示Swing基础知识。 – camickr

回答

2

你不是没有办法让事情发挥作用。就在几个事项:

  1. 你的UI应该在事件指派线程上启动(EDT)
  2. 实际上,你需要你的板/组件添加到您的框架
  3. 您需要pack()你的窗口/ Frame
  4. 你需要使它可见
  5. (设计的东西,可选,但是当你在它的时候,为什么不只是修复它),没有必要延长JFrame,所以让我们放下它。

所以最终采取这些建议考虑导致你是这样的:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingUtilities; 

public class StatsGUI implements ActionListener { 

    JLabel label; 
    JLabel label2; 
    JTextField input; 
    JTextField output; 
    JButton getButton; 
    JButton exitButton; 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == exitButton) { 
      System.exit(0); 
     } else { 
      String text = input.getText(); 
      output.setText(text + "COUNTER"); 
     } 

    } 

    public void initUI() { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(); 
     label = new JLabel("Enter number"); 
     panel.add(label); 
     input = new JTextField(10); 
     input.addActionListener(this); 
     panel.add(input); 

     label2 = new JLabel("Statistics"); 
     output = new JTextField(10); 
     output.setEditable(false); 
     panel.add(output); 

     getButton = new JButton("Go"); 
     getButton.addActionListener(this); 
     panel.add(getButton); 

     exitButton = new JButton("Exit"); 
     exitButton.addActionListener(this); 
     panel.add(exitButton); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new StatsGUI().initUI(); 
      } 
     }); 
    } 
} 
1
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 


class StatsGUI extends JFrame implements ActionListener { 


JLabel label; 
JLabel label2; 
JTextField input; 
JTextField output; 
JButton getButton; 
JButton exitButton; 

public StatsGUI() 
{ 
    JPanel panel = new JPanel(); 
    label = new JLabel("Enter number"); 
    panel.add(label); 
    input = new JTextField(10); 
    input.addActionListener(this); 
    panel.add(input); 

    label2 = new JLabel("Statistics"); 
    output = new JTextField(10); 
    output.setEditable(false); 
    panel.add(output); 

    getButton = new JButton("Go"); 
    getButton.addActionListener(this); 
    panel.add(getButton); 

    exitButton = new JButton("Exit"); 
    exitButton.addActionListener(this); 
    panel.add(exitButton); 
    add(panel); 
    } 

public void actionPerformed(ActionEvent e) 
{ 
    if(e.getSource() == exitButton) 
    { 
     System.exit(0); 
    } 
    else 
    { 
     String text = input.getText(); 
     output.setText(text + "COUNTER"); 
    } 


} 

public static void main(String[] args) 
{ 

StatsGUI s= new StatsGUI(); 
s.setVisible(true); 
s.setSize(1000,1000); 
} 
} 

你是不是调用构造器.CALL costructor像“StatsGUI S =新StatsGUI(); “或'新StatsGUI();' 。 enter image description here

相关问题