我正在尝试从这个类创建一个对象,并将其添加到我的主类中的JPanel。因此,当我将它直接添加到框架而不是面板时,它可以正常工作。但我需要添加多个对象,所以我需要三个JPanel。请帮助我!
public class main {
public static void main(String[] Args) {
GuessProp prop = new GuessProp();
JFrame frame = new JFrame();
JPanel pan = new JPanel();
pan.add(prop);
frame.add(pan);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
vvvv这是我正在添加vvvv
类的代码public class GuessProp extends JComponent {
static ArrayList numbers = new ArrayList<Integer>();
static int next;
static int last;
static Integer count = new Integer(0);
static int acurate = 50;
final static double threshold = 0.75;
public GuessProp()
{
Timer time;
time = new Timer(100, new ActionListener(){
public void actionPerformed(ActionEvent ae){
nextRand();
guess();
count++;
repaint();
}
});
time.start();
}
/*ASSUME THE IMPLEMENTATION FOR METHODS:
*nextRand() AND guess()
*ARE HERE AND WORK FINE...
*/
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Rectangle plot = new Rectangle(50,acurate, 10, 10);
Line2D.Double base = new Line2D.Double(25,55,75,55);
g2.setColor(Color.red);
g2.fill(plot);
g2.setColor(Color.black);
g2.draw(base);
g2.drawString(count.toString(), 100, 50);
}
}
答案 0 :(得分:0)
添加到JPanel的对象(在本例中为paintComponent)需要扩展已从JComponent继承的JPanel。同时为多个面板设置框架布局也很好......
答案 1 :(得分:0)
“但我需要添加多个对象,因此我需要三个JPanel。”
您需要了解的关于JFrame
的内容是默认BorderLayout
。当你只添加一个组件时,它会显得很好,因为框架本身会将组件添加到BorderLayout.CENTER
位置。如果您尝试添加多个,则需要指定每个组件应该去哪个位置。最常用的职位是
BorderLayout.WEST
BorderLayout.EAST
BorderLayout.NORTH
BorderLayout.CENTER
BorderLayout.SOUTH
定位看起来像这样
所以你要添加这样的组件
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
frame.add(panel2, BorderLayout.NORTH);
frame.add(panel2, BorderLayout.CENTER);
frame.add(panel3, BorderLayout.SOUTH);
作为良好做法,CENTER
通常应至少使用一次。另请注意,position只能包含一个组件。
那么你想要添加五个以上的组件是什么?
JPanel
作为内容窗格,并为该面板设置布局。JPanel
与嵌套LayoutManagers
一起使用。请参阅Laying Out Components Within a Container tutorial,了解所有不同的布局。
“我正在尝试从此类创建一个对象,并将其添加到我的主类中的JPanel中。”
如果这意味着我认为它意味着什么,你要将组件添加到正在绘制的JPanel
,我会重新考虑,你将在JPanel
的绘画上添加组件。相反,绘画JPanel
作为其自己的组件,仅对绘画进行龋齿,然后向框架添加更多组件,如上所示。