我试着用 JPanel
我碰到了一堵墙。我可以把两边都取下来,但一旦要从x线中减去,一切都会出错。
package GUIstuff;
import java.awt.Graphics;
import javax.swing.JPanel;
public class DrawPanel extends JPanel{
public void paintComponent (Graphics g){
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
int drawCounter = 0; // counters for all the while statements
int drawCounter2 = 0;
int drawCounter3 = 0;
int drawCounter4 = 0;
int x1 = 0; // cords change with the while statemetns
int x2 = 0;
int y1 = 0;
int y2 = 0;
while (drawCounter <= 15){ // counter
y2 = 250;
g.drawLine(x1, y1, x2, y2);
x2 = x2 + 15;
y1 = y1 + 15;
drawCounter++; }
int u1 = 0;
int u2 = 0;
int v1 = 0;
int v2 = 0;
while (drawCounter2 <= 15){
u2 = 250;
g.drawLine(u1, v1, u2, v2);
u1 = u1 + 15;
v2 = v2 + 15;
drawCounter2++;
}
int a1 = 0;
int a2 = 0;
int b1 = 0;
int b2 = 0;
while (drawCounter3 <= 15){
a2 = 250;
g.drawLine(a1, b1, a2, b2);
b1 = b1 + 15;
a2 = a2 - 15;
drawCounter3++;
}
}
}
这是我的跑步课
package GUIstuff;
import javax.swing.JFrame;
public class DrawPanelTest {
public static void main (String args[]){
DrawPanel panel = new DrawPanel();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize (250, 250);
application.setVisible(true);
}
}
我在左下角和右上角有一条线,但是当我试着从x中减去时,我只得到一条线穿过整个框。
1条答案
按热度按时间iyfamqjs1#
进行自定义绘制时,应覆盖
getPreferredSize()
方法,以便面板可以按其首选大小显示。画直线时,两个变量相同,两个变量不同。适当时使用宽度/高度变量,而不是硬编码数字。在下面的例子中,我做了左侧和底部。下面显示了如何减法。我让你找出另一边的图案。
另外,我使面板更具动态性,这样就可以很容易地配置要绘制的线的数量和线之间的间隙。