在JavaJFrame中绘制多个正方形并访问其中的每一个?
我基本上想把一个300×300的JFrame窗口分成30个正方形(不需要单独绘制),并能够访问每个正方形(可能将它们放入数组/数组列表/堆栈/向量等)。如果不写30次drawRect(x,y,宽度,高度),这是可能的吗?提前谢谢 使用布局管理器在JavaJFrame中绘制多个正方形并访问其中的每一个?,java,swing,canvas,jframe,Java,Swing,Canvas,Jframe,我基本上想把一个300×300的JFrame窗口分成30个正方形(不需要单独绘制),并能够访问每个正方形(可能将它们放入数组/数组列表/堆栈/向量等)。如果不写30次drawRect(x,y,宽度,高度),这是可能的吗?提前谢谢 使用布局管理器 为什么不使用JTable来代替它呢?您可以将组件保存在ArrayList中,并使用GridLayout 以及以下代码片段: getContentPane.setLayout(new GridLayout(x,y)); 其中x和y分别表示行数和列数。 之
为什么不使用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 );
}
}
导入java.awt.Color;
导入java.awt.Container;
导入java.awt.GridLayout;
导入java.awt.Window;
导入java.util.ArrayList;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类MyFrame扩展了JFrame
{
公共静态void main(字符串[]args)
{
MyFrame MyFrame=新建MyFrame();
myframe.setSize(300300);
myframe.setresizeable(false);
myframe.setLocationRelativeTo(空);
setLayout(新的GridLayout(3,3));
Container=myframe.getContentPane();
ArrayList组件=新的ArrayList();
JPanel temp=null;
//填充Arraylist对象。
对于(int i=0;i<9;i++)
{
temp=新的JPanel();
温度设定值(100100);
组件。添加(温度);
容器。添加(温度);
}
myframe.pack();
myframe.setVisible(true);
//通过索引访问组件。
组件。获取(5)。挫折背景(颜色:蓝色);
组件。获取(8)。挫折背景(颜色。绿色);
}
}
除了对每个方块都有对象引用(这样您就可以将它们放入一些集合结构中),您还想对方框做什么?他们是否有需要绘制到画布上的内容?它们是JComponent
s吗?是否要使用类似于JList
,JTable
渲染方式的飞锤模式?请按照SuperDeclader建议使用布局管理器使用gridlayout。