Java JTabbed面板和油漆

Java JTabbed面板和油漆,java,swing,paint,jtabbedpane,Java,Swing,Paint,Jtabbedpane,我有个小问题。大体上我有这样一件事: JTabbedPane tabsPane = new JTabbedPane(); add(tabsPane,BorderLayout.CENTER); JPanel tab1Panel = new JPanel(); JPanel tab2Panel = new JPanel(); //DrawingWindow drawingWindow= new DrawingWindow(); //add(drawi

我有个小问题。大体上我有这样一件事:

    JTabbedPane tabsPane = new JTabbedPane();
    add(tabsPane,BorderLayout.CENTER);
    JPanel tab1Panel = new JPanel();
    JPanel tab2Panel = new JPanel();

    //DrawingWindow drawingWindow= new DrawingWindow();
    //add(drawingWindow);


    tabsPane.addTab("Animacja", tab1Panel); 
    tabsPane.addTab("Wykresy", tab2Panel);
    JButton test = new JButton("Press");
    tab2Panel.add(test);
绘图窗口类

public class DrawingWindow extends JPanel {

/**
 * 
 */
private static final long serialVersionUID = 1L;
public static Balls balls=new Balls();

public DrawingWindow() {

    MakeBall();
}




private void MakeBall()
{    
        balls=new Balls(10,205,5,10);


}

public void paint(Graphics gg){
    super.paint(gg);

    Graphics2D g = (Graphics2D) gg;    
    g.setColor(Color.GRAY);
    g.fillRect(0,70,515,410);
    g.setColor(Color.WHITE);
    g.drawLine(10, 285, 57, 265);
    g.drawLine(10, 285, 57, 305);

    g.drawLine(515, 285, 458, 265);
    g.drawLine(515, 285, 458, 305);
    for(int ii=0;ii<Parameters.numberOfCovers;ii++)
    {
        if(Parameters.whatCovers[ii]==0)
        {
            g.setColor(Color.YELLOW);
            g.fillRect(132+(57*2*ii), 205, 29+2*Parameters.cmCovers[ii], 150 );
        }
        if(Parameters.whatCovers[ii]==1)
        {
            g.setColor(Color.GREEN);
            g.fillRect(132+(57*2*ii), 205, 29+2*Parameters.cmCovers[ii], 150 );
        }
    //    Ellipse2D.Double shape = new Ellipse2D.Double(balls.getX(), balls.getY(), balls.getVelocity(),balls.getRadius());
    //    g.fill(shape);
        repaint();
    } 
}
public void funkcja()
{
    repaint();
}
}
公共类DrawingWindow扩展了JPanel{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
公共静态球=新球();
公共绘图窗口(){
MakeBall();
}
私有void MakeBall()
{    
球=新球(10205,5,10);
}
公共空间涂料(图形gg){
超级油漆(gg);
图形2d g=(图形2d)gg;
g、 setColor(颜色为灰色);
g、 fillRect(0,70515410);
g、 setColor(Color.WHITE);
g、 抽绳(10285,57265);
g、 抽绳(10285、57305);
g、 抽绳(515285458265);
g、 抽绳(515285458305);
对于(int ii=0;iiHej

替换这个

JPanel tab1Panel = new JPanel();
有了这个

JPanel tab1Panel = new DrawingWindow();

到目前为止,您将
DrawingPanel
添加到另一个
JPanel
,但如果您想在选项卡上绘制,则添加创建一个JPanel,您将使用
addTab()将其添加到
JTabbedPane

您不需要重写
绘制
,您应该使用
绘制组件
。不要直接或间接地从任何
绘制
方法中调用
重新绘制
,这将导致绘制事件的无休止循环被调度,最终将消耗您的资源CPU@user3593720如果答案有帮助如果你想解决你的问题,你应该通过勾选复选标记来接受它。参见页面