Hallo zusammen!
Ich habe ein kleines Problem... Und zwar hab ich ein Programm das mir eine Reige von Buttons zeichnen soll. Wenn ich normale JButtons verwende funktioniert alles super, aber wenn ich ein Klasse nehme und diese von JButton erben lasse, sind alle Buttons nicht sichtbar. Wenn ich mit der Maus darüberfahre, dann geht...
Hier ist ein kleiner Beispiel:
Weiss einer warum das so ist?
Danke für die Hilfe!
Michael
Ich habe ein kleines Problem... Und zwar hab ich ein Programm das mir eine Reige von Buttons zeichnen soll. Wenn ich normale JButtons verwende funktioniert alles super, aber wenn ich ein Klasse nehme und diese von JButton erben lasse, sind alle Buttons nicht sichtbar. Wenn ich mit der Maus darüberfahre, dann geht...
Hier ist ein kleiner Beispiel:
Code:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Main{
private static JFrame frame = new JFrame();
public static void main(String[] args) {
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
addMenu();
frame.add(getMainPanel());
frame.pack();
showGUI();
}
private static JMenuItem closeItem = null;
private static JMenuItem newItem = null;
private static JPanel mainPanel = null;
private static JLabel startImage = null;
private static MineFieldButton[][] mines = null;
private static JPanel getMainPanel(){
if (mainPanel == null){
mainPanel = new JPanel();
if (mines == null)
mainPanel.add(getStartImage());
else{
mainPanel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20;
c.ipadx = 20;
for (int x=0;x<mines.length;x++){
for (int y=0;y<mines[x].length;y++){
c.gridx = x;
c.gridy = y;
mainPanel.add(mines[x][y],c);
}
}
}
}
return mainPanel;
}
private static JLabel getStartImage(){
if(startImage == null){
startImage = new JLabel();
}
return startImage;
}
private static void addMenu(){
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
menu.add(getNewItem());
menu.add(getCloseItem());
menuBar.add(menu);
frame.setJMenuBar(menuBar);
}
private static JMenuItem getNewItem(){
if (newItem == null){
newItem = new JMenuItem("New");
newItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
createMines();
}
});
}
return newItem;
}
private static JMenuItem getCloseItem(){
if (closeItem == null){
closeItem = new JMenuItem("Close");
closeItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
return closeItem;
}
public static void showGUI(){
frame.setVisible(true);
}
private static void createMines(){
initMinesGUI();
frame.remove(getMainPanel());
mainPanel = null;
frame.add(getMainPanel());
frame.pack();
}
private static void initMinesGUI(){
mines = new MineFieldButton[10][10];
for (int x=0;x<mines.length;x++){
for (int y=0;y<mines[x].length;y++){
mines[x][y] = new MineFieldButton();
mines[x][y].setBorder(BorderFactory.createRaisedBevelBorder());
}
}
}
}
import javax.swing.JButton;
public class MineFieldButton extends JButton{
private static final long serialVersionUID = -1020769129018597011L;
private int number = 0;
private int x;
private int y;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Weiss einer warum das so ist?
Danke für die Hilfe!
Michael