You are on page 1of 6

package GUIstuf;

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++;

}
}
}
Here is my runner class

package GUIstuf;
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);

}
I have a the lines in the bottom left and the upper right but when I try to subtract from x I just
get lines going a crossed the whole box.

Abajo

When doing custom painting you should override the getPreferredSize() method so the panel
can be displayed at its preferred size.

When you draw the lines two variable are the same and two variables differ. Use the
width/height variable when appropriate instead of hardcoding a number. In the example below I
did the left and bottom sides. The bottom side shows how to subtract. I'll let you figure out the
pattern for the other two side.

Also, I made the panel a little more dynamic so it will be easy to configure the number of lines
you want painted and the gap between the lines.

import java.awt.*;
import javax.swing.*;

public class DrawSSCCE extends JPanel


{
private int lines;
private int lineGap;

public DrawSSCCE(int lines, int lineGap)


{
this.lines = lines;
this.lineGap = lineGap;
}

@Override
public Dimension getPreferredSize()
{
int size = lines * lineGap;
return new Dimension(size, size);
}

@Override
public void paintComponent(Graphics g)
{
int width = getWidth();
int height = getHeight();

// Draw lines starting from left to bottom


int x = lineGap;
int y = 0;

for (int i = 0; i < lines; i++)


{
g.drawLine(0, y, x, height);
x += lineGap;
y += lineGap;
}
// Draw lines starting from bottom to right

x = 0;
y = height - lineGap;

for (int i = 0; i < lines; i++)


{
g.drawLine(x, height, width, y);
x += lineGap;
y -= lineGap;
}

// Draw lines starting from right to top

// Draw lines starting from top to left

private static void createAndShowUI()


{
JFrame frame = new JFrame("DrawSSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new DrawSSCCE(15, 15) );
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}

public static void main(String[] args)


{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
Hay personas que nos hablan y ni las escuchamos hay personas que nos hieren y ni dejan
cicatriz pero hay personas que simplemente aparecen en nuestra vida y nos marcan para
siempre

You might also like