gridlayout.eg에 행과 열을 선언 할 때 : 3x2 (3 행과 2 열).이 행과 열에 대한 스켈 레탈 뷰를 가져와야합니다. 점선으로 된 사각형과 같습니다. 어떻게 스윙을 사용하여이 작업을 수행 할 수 있습니까? ?스윙을 사용하여 점선으로 표시된 gridlayout 셀 테두리를 그리는 방법은 무엇입니까?
는 Mathan
gridlayout.eg에 행과 열을 선언 할 때 : 3x2 (3 행과 2 열).이 행과 열에 대한 스켈 레탈 뷰를 가져와야합니다. 점선으로 된 사각형과 같습니다. 어떻게 스윙을 사용하여이 작업을 수행 할 수 있습니까? ?스윙을 사용하여 점선으로 표시된 gridlayout 셀 테두리를 그리는 방법은 무엇입니까?
는 Mathan
가 GridLayout과에서 각 구성 요소에 Border 추가 간주한다.
JPanel을 서브 클래스 화하여 paintChildren() 내에 그리드를 그리십시오. 이 패널에 추가하는 모든 구성 요소에는이 격자가 표시됩니다. 예 :
public class DebugPanel extends JPanel {
@Override
protected void paintChildren(Graphics g) {
super.paintChildren(g);
g.setColor(Color.GRAY);
// dashed stroke
BasicStroke stroke = new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 1,new float[]{5},0);
((Graphics2D)g).setStroke(stroke);
drawComponentGrid(this,g);
}
/**
* Drawn vertical and horizontal guides for a containers child
* components
*/
private static void drawComponentGrid(Container c, Graphics g) {
for(int i=0;i<c.getComponentCount();++i) {
Rectangle r = c.getComponent(i).getBounds();
int x = r.x;
// vertical line at left edge of component
g.drawLine(x,0,x,c.getHeight());
x+= r.width;
// vertical line at right edge of component
g.drawLine(x,0,x,c.getHeight());
// horizontal line at top of component
int y = r.y;
g.drawLine(0,y,c.getWidth(),y);
// horizontal line at bottom of component
y+= r.height;
g.drawLine(0,y,c.getWidth(),y);
}
}
}