A
ash34
Gast
Hy,
ich möchte für mein Fenster ein BorderLayout verwenden. Im SOUTH Bereich wird eine Reihe von Komponenten angeordnet.
Im NORTH bereich sollen mehrere Boxen gezeichnet werden. Dazu habe ich einen Klasse BoxPanel benutzt.
Das Problem ist, dass der NORTH Bereich zu klein ist, sodass die Boxen nicht richtig zu sehen sind.
Wie kann ich den Bereich vergrößern?
Im Anhang befindet sich noch ein Screenshot, der das Problem deutlich macht...
ich möchte für mein Fenster ein BorderLayout verwenden. Im SOUTH Bereich wird eine Reihe von Komponenten angeordnet.
Im NORTH bereich sollen mehrere Boxen gezeichnet werden. Dazu habe ich einen Klasse BoxPanel benutzt.
Das Problem ist, dass der NORTH Bereich zu klein ist, sodass die Boxen nicht richtig zu sehen sind.
Wie kann ich den Bereich vergrößern?
Java:
private void paintFrame(){
BorderLayout border = new BorderLayout();
puzzleFrame.setLayout(border);
puzzleFrame.add(boxp, border.NORTH);
puzzleFrame.add(contentContainer, border.SOUTH);
puzzleFrame.setTitle("Echo Request Puzzle");
puzzleFrame.setSize(puzzleDim);
puzzleFrame.setVisible(true);
puzzleFrame.setDefaultCloseOperation(puzzleFrame.DO_NOTHING_ON_CLOSE);
puzzleFrame.addWindowListener(new MyWindowListener());
puzzleFrame.addKeyListener(new MyAppendKeyListener());
}
Java:
public class BoxPanel extends JPanel {
private static final long serialVersionUID = 1L;
private List<Box> boxList;
private int currentBox = -1;
private Point clickPoint;
private Point position;
private Color color = Color.WHITE;
/**
* Constructor
*
*/
public BoxPanel() {
this.setSize(new Dimension(1300, 130));
boxList = new ArrayList<Box>();
// adding mouseListener to the panel
this.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {
currentBox = -1;
}
@Override
public void mousePressed(MouseEvent e) {
for (int i=boxList.size()-1; i>=0; i--) {
clickPoint = e.getPoint();
Box box = boxList.get(i);
if (box.getBounds().contains(clickPoint)) {
currentBox = i;
position = new Point(box.getBounds().x, box.getBounds().y);
return;
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
currentBox = -1;
}
});
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
if (currentBox!= -1) {
Box box = boxList.get(currentBox);
Point p = e.getPoint();
box.setLocation(position.x + (p.x - clickPoint.x), position.y + p.y - clickPoint.y);
repaint();
}
}
@Override
public void mouseMoved(MouseEvent e) {}
});
}
public void fillBoxPanel(){
String[] boxText = {"Checksum","Code","Data","HdrLen","Header Checksum",
"Fragment Offset","Identifier","IP-Packet Length",
"Length/Type","Options","Pad","Packet ID","Padding",
"Protocol","Präambel","Prüfsumme","Sequence Number",
"Source Address(Eth)","Source Address(IP)","Target Address(Eth)",
"Target Address(IP)","TOS","TTL","Type","Vers"};
int x = 5; // vertical gap for the first box (related to (0,0))
int y = 1; // horizontal gap for the first box (related to (0,0))
int width = 150;
int height = 40;
int n=0;
int m = 40; // horizontal gap between boxes
int rowCount = 9; // amount of boxes in one row
// for - loop for adding each String to one box
// setText(String) finally adds a String to a box
for(int i=0; i<boxText.length; i++){
if(i < rowCount){
Box box = new Box(width, height, x+n, y);
box.setText(boxText[i]);
box.setColor(color);
this.addBox(box);
n = width*(i+1);
}
if(i == rowCount){
n=0;
Box box = new Box(width, height, x+n, y+m);
box.setText(boxText[i]);
box.setColor(color);
this.addBox(box);
n = width*(i-8);
}
if(i > rowCount && i < rowCount*2){
Box box = new Box(width, height, x+n, y+m);
box.setText(boxText[i]);
box.setColor(color);
this.addBox(box);
n = width*(i-8);
}
if(i == rowCount*2){
n=0;
Box box = new Box(width, height, x+n, y+m*2);
box.setText(boxText[i]);
box.setColor(color);
this.addBox(box);
n = width*(i-17);
}
if(i > rowCount*2){
Box box = new Box(width, height, x+n, y+m*2);
box.setText(boxText[i]);
box.setColor(color);
this.addBox(box);
n = width*(i-17);
}
}
}
public void paint(){
this.repaint();
}
public void addBox(Box box) {
this.boxList.add(box);
this.repaint();
}
public List<Box> getBoxList(){
return this.boxList;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (Box box: boxList)
box.paintComponent(g);
}
}
Im Anhang befindet sich noch ein Screenshot, der das Problem deutlich macht...