Hallo, ich habe folgendes Problem:
Ich habe eine Menuzeile, die 5% des Fensters einnimmt. Klickt man jetzt auf einen Button, der genau so hoch ist wie die Menüzeile, so soll sich ein DropdownMenü öffnen. Das tut es auch, es wird aber nicht angezeigt, weil es halt außerhalb des Panels angezeigt werden soll. Meine Frage jetzt: Kann man die Buttons im DropdownMenü die Grenzen des Panels jetzt einfach ignorieren lassen oder muss man immer die Höhe des Panels anpassen?
Hier noch mal mein Code:
Vielen Dank für die Hilfe!
Ich habe eine Menuzeile, die 5% des Fensters einnimmt. Klickt man jetzt auf einen Button, der genau so hoch ist wie die Menüzeile, so soll sich ein DropdownMenü öffnen. Das tut es auch, es wird aber nicht angezeigt, weil es halt außerhalb des Panels angezeigt werden soll. Meine Frage jetzt: Kann man die Buttons im DropdownMenü die Grenzen des Panels jetzt einfach ignorieren lassen oder muss man immer die Höhe des Panels anpassen?
Hier noch mal mein Code:
Java:
package Taskleiste;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Menu extends JPanel{
private static final long serialVersionUID = 1L;
private JFrame frame;
private JButton datei;
private JButton[] dateiDrop = new JButton[6];
private String[] dateiDropNames = new String[]{"Neue Datei", "Öffnen", "Schließen", "Speichern", "Speichern unter", "Beenden"};
protected boolean dateiDown = false;
public Menu(JFrame frame) {
this.frame = frame;
setSize(800,600);
setLayout(null);
datei = new JButton("Datei");
datei.setBounds(0,0,100,20);
datei.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(dateiDown) {
for(int i = 0; i < dateiDrop.length; i++) {
dateiDrop[i].setVisible(false);
dateiDown = false;
}
} else {
for(int i = 0; i < dateiDrop.length; i++) {
dateiDrop[i].setVisible(true);
dateiDown = true;
}
}
}
});
add(datei);
datei.setVisible(true);
initializeButtons();
setVisible(true);
repaint();
}
public void paintComponent(Graphics g) {
g.setColor(Color.GREEN);
g.fillRect(0, 0, getWidth(), getHeight());
setBounds(0, 0, frame.getWidth(), (int)(frame.getHeight() * 0.03));
}
protected void initializeButtons() {
int posY = datei.getHeight();
for(int i = 0; i < dateiDrop.length; i++) {
dateiDrop[i] = new JButton(dateiDropNames[i]);
dateiDrop[i].setBounds(0, posY, 130, datei.getHeight());
add(dateiDrop[i]);
dateiDrop[i].setVisible(false);
posY += datei.getHeight();
}
}
}
Vielen Dank für die Hilfe!