所以我是用Java设计图形的新手我想知道是否有人可以帮助我。我有两个类,我想在JFrame中同时显示它们。但只有一个或另一个得到显示。
public class Tutorial extends JPanel implements ActionListener {
Background bc = new Background();
Timer tm = new Timer(5,this);
int x =0, velX = 2;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(x, 30, 50, 30);
tm.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if(x<0 || x>550){
velX = -velX;
}
x = x+ velX;
repaint();
}
public static void main(String [] args){
Background bc = new Background();
Tutorial t = new Tutorial();
JFrame jf = new JFrame();
jf.setTitle("Tutorial");
jf.setSize(600,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(t);
jf.add(bc);
}
我的第二堂课
public class Background extends Canvas {
public void paint(Graphics g){
g.setColor(Color.GREEN);
g.fillRect(0,0,600,125);
g.fillRect(0,250,600,125);
g.setColor(Color.black);
g.fillRect(0,125,600,125);
}
出于某种原因,我只能显示背景或教程? 任何人都可以指出我正确的方向或告诉我哪里出错了。我希望能够在一个窗口中显示多个这样的类
答案 0 :(得分:2)
JFrame的默认布局管理器是 BorderLayout 。
通过使用单参数JFrame.add()函数,您可以将两个组件添加到JFrame的BorderLayout.CENTER部分。这意味着您只能看到其中一个组件。
解决方案是使用不同的布局管理器,或将组件添加到BorderLayout的不同部分。
此处有更多信息:http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html