我创建了一个简单的指南针程序,可以在屏幕上移动GUI框,我现在正在进行添加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);
}
}
}
答案 0 :(得分:7)
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);