2011-04-02 61 views
0

我想制作工作按钮,并将其放在下面的代码中。我的问题是,我把任何地方,我把行动者或其他东西,它总是给我奇怪的错误。我想让按钮b1在我按下时打印文本。我真的很感激帮助。我只是初学者。无法在代码中安装按钮

public class Simulator { 

public static void main(String[] args) { 

    boolean suc1,suc2,suc3,suc4,suc5,suc6,suc7; 

     JFrame f = new JFrame("Simulator"); 
     f.setSize(500, 400); 
     f.setResizable(false); 
     f.setLayout(null); 
     f.setVisible(true); 
     JButton b1 = new JButton("Start"); 
     JButton b2 = new JButton("Clear"); 
     JButton b3 = new JButton("Find"); 
     JButton b4 = new JButton("Stop"); 
     b1.setBounds(20,335,80,25); 
     b2.setBounds(110,335,80,25); 
     b3.setBounds(200,335,80,25); 
     b4.setBounds(395,335,80,25); 
     f.add(b1); 
     f.add(b2); 
     f.add(b3); 
     f.add(b4); 

} 
} 
+0

虽然看起来像Java,你应该标记问题澄清你正在使用 – user634618 2011-04-02 16:27:27

+2

什么平台,它给你什么错误? – MByD 2011-04-02 16:38:31

+1

为了更快提供更好的帮助,请发布[SSCCE](http://pscode.org/sscce.html)(&将包括导入)。为了您未来的理智,避免'null'布局。 – 2011-04-02 17:20:18

回答

-1

尝试

JButton b1 = new JButton("Start"); 
    b1.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Button b1 was pressed"); 

     } 
    }); 

编辑:

似乎为我工作的罚款。下面是完整的main()方法

public static void main(String[] args) { 

     boolean suc1,suc2,suc3,suc4,suc5,suc6,suc7; 

     JFrame f = new JFrame("Simulator"); 
     f.setSize(500, 400); 
     f.setResizable(false); 
     f.setLayout(null); 
     f.setVisible(true); 
     JButton b1 = new JButton("Start"); 
     b1.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println("Button b1 was pressed"); 

      } 
     }); 
     JButton b2 = new JButton("Clear"); 
     JButton b3 = new JButton("Find"); 
     JButton b4 = new JButton("Stop"); 
     b1.setBounds(20,335,80,25); 
     b2.setBounds(110,335,80,25); 
     b3.setBounds(200,335,80,25); 
     b4.setBounds(395,335,80,25); 
     f.add(b1); 
     f.add(b2); 
     f.add(b3); 
     f.add(b4); 
    } 

enter image description here

+0

当我使用你的方法时,它不允许我把那个按钮放在我的框架中 – Ramist 2011-04-02 16:36:43

+2

为什么不呢?什么是错误信息? – 2011-04-02 16:38:10

+0

我知道它不会给我错误,但然后我的按钮不显示在框架中,它只是消失。我不能使用setBounds到该按钮,也不会将它添加到框架与f1.add(b1); – Ramist 2011-04-02 16:42:32

0
import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.EmptyBorder; 

public class Simulator { 

    public static void main(String[] args) { 

     Runnable r = new Runnable() { 
      public void run() { 
       JFrame f = new JFrame("Simulator"); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       // Unnecessary, just set the preferred size of the 
       // custom(?) component that renders the simulation, 
       // use layouts, & pack() the frame when done. 
       //f.setSize(500, 400); 

       f.setResizable(false); 

       // Bad idea. Will cause trouble until fixed. 
       //f.setLayout(null); 

       // Play with the numbers for different effects. 
       // If the edge of the buttons is not supposed to align 
       // with the 'simulation' panel, borders can be added to 
       // the elements to create that effect. 

       JPanel gui = new JPanel(new BorderLayout(5,5)); 
       gui.setBorder(new EmptyBorder(10,30,10,30)); 

       JPanel simulation = new JPanel(); 
       simulation.setPreferredSize(new Dimension(450,300)); 
       simulation.setBackground(Color.WHITE); 
       gui.add(simulation, BorderLayout.CENTER); 

       JPanel buttonPanel = new JPanel(new BorderLayout(50,5)); 
       gui.add(buttonPanel, BorderLayout.SOUTH); 

       JPanel westButtons = new JPanel(new GridLayout(1,0,10,10)); 

       JButton b1 = new JButton("Start"); 
       JButton b2 = new JButton("Clear"); 
       JButton b3 = new JButton("Find"); 
       JButton b4 = new JButton("Stop"); 

       westButtons.add(b1); 
       westButtons.add(b2); 
       westButtons.add(b3); 

       buttonPanel.add(westButtons, BorderLayout.WEST); 

       buttonPanel.add(b4, BorderLayout.EAST); 

       f.setContentPane(gui); 

       f.pack(); 
       f.setVisible(true); 
      } 
     }; 
     // ensure the UI is built on the EDT. 
     SwingUtilities.invokeLater(r); 
    } 
} 

Sceenshot of GUI

+0

你似乎没有解决OP关于使用'ActionListener'作为'b1'的问题。 – 2011-04-02 18:05:39

+0

@Bala R Yeah ..我完全**错过了**关于ActionListener的一点。 - 这很有讽刺意味,因为这是问题的症结所在!我认为现在没有多少意义了,因为你的代码覆盖了AL,我会离开我的代码,因为它可能会向OP展示如何布局可能会实现。 – 2011-04-02 18:25:09