package de.king.layoutidee;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
public class SpecialComponent extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel lblCenterNumber;
private JLabel[] lblGreen;
private JLabel lblRed;
public SpecialComponent() {
setBorder(new LineBorder(new Color(0, 0, 0), 2));
setBackground(Color.WHITE);
setLayout(new FormLayout(
new ColumnSpec[] {
ColumnSpec.decode("default:grow"),
ColumnSpec.decode("default:grow"),
ColumnSpec.decode("default:grow"),},
new RowSpec[] {
RowSpec.decode("default:grow"),
RowSpec.decode("default:grow"),
RowSpec.decode("default:grow(0.1)"),
RowSpec.decode("default:grow"),
RowSpec.decode("default:grow"),})
);
lblCenterNumber = new JLabel();
lblCenterNumber.setOpaque(true);
lblCenterNumber.setBackground(new Color(230, 230, 230));
lblCenterNumber.setBorder(new LineBorder(new Color(0, 0, 0), 2));
add(lblCenterNumber, "2, 2, 1, 3, fill, fill");
lblGreen = new JLabel[5];
for(int i=0; i<lblGreen.length; i++) {
lblGreen[i] = new JLabel();
lblGreen[i].setOpaque(true);
lblGreen[i].setBackground(Color.GREEN);
}
add(lblGreen[0], "1, 4, fill, fill");
add(lblGreen[1], "1, 2, fill, fill");
add(lblGreen[2], "2, 1, fill, fill");
add(lblGreen[3], "3, 2, fill, fill");
add(lblGreen[4], "3, 4, fill, fill");
lblRed = new JLabel();
lblRed.setOpaque(true);
lblRed.setBackground(new Color(255, 60, 60));
add(lblRed, "2, 5, fill, fill");
}
public void setCenterNumber(int number) {
lblCenterNumber.setText(String.valueOf(number));
}
public int getCenterNumber() {
return Integer.parseInt(lblCenterNumber.getText());
}
public void setGreenNumber(int number, int index) {
lblGreen[index].setText(String.valueOf(number));
}
public int getGreenNumber(int index) {
return Integer.parseInt(lblGreen[index].getText());
}
public void setRedNumber(int number) {
lblRed.setText(String.valueOf(number));
}
public int getRedNumber() {
return Integer.parseInt(lblRed.getText());
}
// Nur zum Testen, gehört natürlich hier nicht hin:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SpecialComponent specialComp = new SpecialComponent();
specialComp.setPreferredSize(new Dimension(400, 250));
frame.setContentPane(specialComp);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}