添加多个按钮使用

问题描述:

我创建了移动屏幕周围的GUI箱一个简单的指南针计划JPanels,我现在进展到添加NE,NW等添加多个按钮使用

这包括使用JPanels,因为这允许多个对象。我的问题是,我已经为单独的按钮制作了9个独立的面板,但是我不知道如何将它们添加到JFrame中,因为我所做的每件事似乎都不起作用。

任何想法,将不胜感激。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class MovingCompassExtraJFrame extends JFrame implements ActionListener { 

    private JButton north; 
    private JButton east; 
    private JButton west; 
    private JButton south; 
    private JButton center; 
    private JButton northEast; 
    private JButton northWest; 
    private JButton southEast; 
    private JButton southWest; 
    int screenHeight; 
    int screenWidth; 
    int height; 
    int width; 

    public MovingCompassExtraJFrame() 
    { 
     super(); 

      width = 400; 
      height = 300; 

      setSize(width, height); 
      setLocation(200, 100); 
      setDefaultCloseOperation(EXIT_ON_CLOSE); 

      getContentPane().setBackground(Color.RED); 
      getContentPane().setLayout(new GridLayout(3,3)); 

      setupNEPanel(); 
      setupNPanel(); 
      setupNWPanel(); 
      setupWPanel(); 
      setupCPanel(); 
      setupEPanel(); 
      setupSWPanel(); 
      setupSPanel(); 
      setupSEPanel(); 

      setVisible(true); 

    } 

    private JPanel setupNEPanel() 
     { 
      northEast = new JButton("Move to North East"); 

      JPanel northEP = new JPanel(); 

      getContentPane().add(northEast); 
      east.addActionListener(this); 

      return northEP; 
     } 

    private JPanel setupNPanel() 
     { 
     north = new JButton("Move to North"); 

     JPanel northP = new JPanel(); 

     getContentPane().add(north); 
     north.addActionListener(this); 

     return northP; 
     } 

    private JPanel setupNWPanel() 
     { 
     northWest = new JButton("Move to North West"); 

     JPanel northWP = new JPanel(); 

     getContentPane().add(northWest); 
     west.addActionListener(this); 

     return northWP; 
     } 

    private JPanel setupWPanel() 
     { 

      west = new JButton("Move to West"); 

      JPanel westP = new JPanel(); 

      getContentPane().add(west); 
      west.addActionListener(this); 

      return westP; 
     } 

    private JPanel setupCPanel() 
     { 
      center = new JButton("Move to Center"); 

      JPanel centerP = new JPanel(); 

      getContentPane().add(center); 
      center.addActionListener(this); 

      return centerP; 
     } 

    private JPanel setupEPanel() 
     { 
      east = new JButton("Move to East"); 

      JPanel eastP = new JPanel(); 

      getContentPane().add(east); 
      east.addActionListener(this); 

      return eastP; 

     } 

    private JPanel setupSEPanel() 
     { 
      southEast = new JButton("Move to South East"); 

      JPanel southEP = new JPanel(); 

      getContentPane().add(southEast); 
      east.addActionListener(this); 

      return southEP; 
     } 

    private JPanel setupSPanel() 
     { 
      south = new JButton("Move to South"); 

      JPanel southP = new JPanel(); 

      getContentPane().add(south); 
      south.addActionListener(this); 

      return southP; 
     } 

    private JPanel setupSWPanel() 
     { 
      southWest = new JButton("Move to South West"); 

      JPanel southWP = new JPanel(); 

      getContentPane().add(southWest); 
      west.addActionListener(this); 

      return southWP; 
     } 

    public void actionPerformed(ActionEvent e) 
    { 
     screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height; 
     screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width; 


     if (e.getSource() == north) 
     { 
      this.setLocation((screenWidth - width)/ 2, 0); 
     } 
     else if (e.getSource() == south) 
     { 
      this.setLocation((screenWidth - width)/ 2, (screenHeight-height)- 30); 
     } 
     else if (e.getSource() == east) 
     { 
      this.setLocation(screenWidth - width , (screenHeight-height)/2); 
     } 
     else if (e.getSource() == west) 
     { 
      this.setLocation(0, (screenHeight-height)/2); 
     } 
     else if (e.getSource() == center) 
     { 
      this.setLocation((screenWidth-width)/2, (screenHeight - height)/2); 
     } 
    } 
} 
+1

看来你需要一个像[这]排列(http://*.com/questions/10861852/add-a-complex-image-in-the-panel-with-buttons-围绕它在一个定制用户/ 10862262#10862262)(用'GridLayout'完成)。 – 2013-02-18 11:34:32

+1

首先,您要添加按钮而不是面板,其次您可能有兴趣查看网格布局以便在框架中排列面板。 – 2013-02-18 11:34:50

JFrame frame = new JFrame ("Compass"); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.getContentPane().setLayout(new GridLayout(3, 3)); 
frame.add (new JButton ("NW")); 
frame.add (new JButton ("N")); 
frame.add (new JButton ("NE")); 
frame.add (new JButton ("W")); 
frame.add (new JButton (" ")); 
frame.add (new JButton ("E")); 
frame.add (new JButton ("SW")); 
frame.add (new JButton ("S")); 
frame.add (new JButton ("SE")); 
frame.pack(); 
frame.setVisible(true);