繁体   English   中英

在Java JFrame中绘制多个正方形并访问其中的每个正方形?

[英]Draw multiple squares in a Java JFrame and access each single one of them?

我基本上想将300 x 300的JFrame窗口划分为30个正方形(而不是分别绘制它们),并能够访问每个正方形(也许将它们放入array / arraylist / stack / vector / etc)。 在不编写30次drawRect(x,y,width,height)的情况下可以吗? 提前致谢。

为什么不选择JTable呢?

您可以将组件保留在ArrayList中,并使用GridLayout和以下代码片段:

getContentPane.setLayout(new GridLayout(x,y));

其中x和y分别表示行数和列数。 之后,您可以将组件添加到JFrame对象的内容中。

样例代码:

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Window;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame
{
    public static void main ( String [] args )
    {
        MyFrame myframe = new MyFrame();
        myframe.setSize( 300, 300 );
        myframe.setResizable( false );
        myframe.setLocationRelativeTo( null );
        myframe.setLayout( new GridLayout(3,3) );

        Container container = myframe.getContentPane();
        ArrayList < JPanel > components = new ArrayList < JPanel >();
        JPanel temp = null;

        // Populating Arraylist object.
        for ( int i = 0; i < 9; i++ )
        {
            temp = new JPanel();
            temp.setSize( 100,100 );
            components.add( temp );
            container.add(temp);
        }

        myframe.pack();
        myframe.setVisible( true );

        // Accessing components via index.
        components.get( 5 ).setBackground( Color.BLUE );
        components.get( 8 ).setBackground( Color.GREEN );
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM