Ich arbeite zur Zeit an einem Kalender und habe Probleme mit der Textausrichtung für die Spaltenüberschriften und des Datums. So - Sa sollte mittig angezeigt werden und beim Tag die Nummer rechtsbündig.
Es gibt noch ein kleines Problem mit dem Layoutmanager GridLayout. Vergrößere oder verkleiner ich das Frame und lässt sich die Größe nicht durch 7 Teilen wird der Rest einfach vom Layoutmaanger ignoriert und es entstehen hässliche Lücken. Am besten sieht man es wenn man dem JPanel Content einen Border verpasst.
Es gibt noch ein kleines Problem mit dem Layoutmanager GridLayout. Vergrößere oder verkleiner ich das Frame und lässt sich die Größe nicht durch 7 Teilen wird der Rest einfach vom Layoutmaanger ignoriert und es entstehen hässliche Lücken. Am besten sieht man es wenn man dem JPanel Content einen Border verpasst.
Code:
/**
* @(#)jRaidplaner.java
*
* jRaidplaner application
*
* @author
* @version 1.00 2008/9/1
*/
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.Dimension;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class jRaidplaner extends JFrame{
public jRaidplaner(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800,600);
this.setLayout(new BorderLayout());
JPanel overview = new JPanel();
overview.setBackground(new Color(204,221,238));
overview.setLayout(new BorderLayout());
JPanel layoutHack = new JPanel();
layoutHack.setLayout(new BorderLayout());
JPanel headline = new JPanel();
headline.setLayout(new GridLayout(1,7));
headline.setBackground(new Color(195,217,255));
String[] headlines = {
"So","Mo","Di","Mi","Do","Fr","Sa"
};
for(int i=0; i<7; i++){
JLabel dayString = new JLabel(headlines[i]);
dayString.setHorizontalTextPosition(SwingConstants.CENTER);
dayString.setForeground(Color.BLUE);
dayString.setBorder(BorderFactory.createMatteBorder(0,0,0,1,new Color(195,217,255)));
headline.add(dayString);
}
layoutHack.add(headline,BorderLayout.PAGE_START);
JPanel content = new JPanel();
content.setLayout(new GridLayout(6,7));
content.setBackground(new Color(195,217,255));
for(int i = 0; i < 6*7; i++){
JPanel day = new JPanel();
JLabel number = new JLabel(""+i);
number.setHorizontalTextPosition(JLabel.RIGHT);
number.setOpaque(true);
number.setBackground(new Color(232,238,247));
day.setLayout(new BorderLayout());
day.add(number, BorderLayout.PAGE_START);
day.setBorder(BorderFactory.createMatteBorder(0,0,1,1,new Color(204,221,238)));
day.setBackground(Color.WHITE);
content.add(day);
}
layoutHack.add(content,BorderLayout.CENTER);
overview.add(layoutHack,BorderLayout.CENTER);
JPanel lPlaceholder = new JPanel();
lPlaceholder.setBackground(new Color(195,217,255));
overview.add(lPlaceholder,BorderLayout.BEFORE_LINE_BEGINS);
JPanel rPlaceholder = new JPanel();
rPlaceholder.setBackground(new Color(195,217,255));
overview.add(rPlaceholder,BorderLayout.AFTER_LINE_ENDS);
JPanel bPlaceholder = new JPanel();
bPlaceholder.setBackground(new Color(195,217,255));
overview.add(bPlaceholder,BorderLayout.PAGE_END);
this.add(overview,BorderLayout.CENTER);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO, add your application code
new jRaidplaner();
}
}