GUI problemer
Jeg har to problemer med min GUI:10 point for sp1 og 20 for sp2
1) Min menuBarItems vises under de textFields der er på min gui. Hvordan kan jeg fixe det problem?
2) Når jeg kører mit program, og vælger at skifte mellem mine 2 paneler (pnlUgeMenu, pnlGenerelMenu), så ser man at der bliver tegnet (flere gange) en masse TextFields oppe i venstre hjørne, de bliver fjernet efter kort tid... de står nærmest og blinker...
Jeg har prøvet at få programmet til at starte op, med at tegne en af panelerne med det samme... På det sted optegner den ikke TextFields flere gange...
Her er koden:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class MenuGui extends JFrame implements ActionListener, KeyListener//, MouseListener, KeyListener
{
// Oprettelse af Gui objekter
JMenuBar mnuBar = new JMenuBar();
JMenu mnuMenu = new JMenu();
JMenuItem mnuUgeMenu = new JMenuItem();
JMenuItem mnuGenerelMenu = new JMenuItem();
JMenuItem mnuAfslut = new JMenuItem();
JPanel contentPane;
JPanel pnlUgeMenu = new JPanel();
JPanel pnlGenerelMenu = new JPanel();
int intPanelTop = 10;
int intPanelLeft = 10;
TextField txtUgeMenuDato [] = new TextField [5];
TextField txtUgeMenuRetNavn [] = new TextField [5];
TextField txtUgeMenuPris [] = new TextField [5];
TextField txtGenerelMenuSpecialInfo [] = new TextField [5];
TextField txtGenerelMenuRetNavn [] = new TextField [5];
TextField txtGenerelMenuPris [] = new TextField [5];
JLabel lblUgeMenuDato = new JLabel();
JLabel lblUgeMenuRetNavn = new JLabel();
JLabel lblUgeMenuPris = new JLabel();
JLabel lblGenerelMenuPris = new JLabel();
JLabel lblGenerelMenuRetNavn = new JLabel();
JLabel lblGenerelMenuSpecialInfo = new JLabel();
// TitledBorder og Border bruges til at omkranse felter med en linje, samt en tilsvarende tekst
TitledBorder ttlBorderUgeMenu;
TitledBorder ttlBorderGenerelMenu;
// bdrLowered har fået navnet, da den skal bruges til at give en dybdeEffekt
Border bdrLowered;
//
// Constructor
//
public MenuGui()
{
try
{
init();
}
catch(Exception e)
{
e.printStackTrace();
}
}
//
// Init() instansiere objekterne på GUI'en
//
private void init() throws Exception
{
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
this.setTitle("Menu");
bdrLowered = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(148, 145, 140),new Color(103, 101, 98));
ttlBorderUgeMenu = new TitledBorder(bdrLowered, "Uge Menu");
ttlBorderGenerelMenu = new TitledBorder(bdrLowered, "Generel Menu");
//pnlUgeMenu.setVisible(false); // Så man kan spørge (under ActionPerformed) om panelet er visible eller ej
//pnlGenerelMenu.setVisible(false);
addListeners();
makeMenuBar();
}
public void makeUgeMenu()
{
pnlUgeMenu = new JPanel();
pnlUgeMenu.setLayout(null);
//pnlUgeMenu.setVisible(true);
//pnlGenerelMenu.setVisible(false);
for(int i = 0; i < 5; i++)
{
txtUgeMenuDato[i] = new TextField();
txtUgeMenuDato[i].setBounds(10, (40 + (i * 25)), 80, 20);
txtUgeMenuRetNavn[i] = new TextField();
txtUgeMenuRetNavn[i].setBounds(100, (40 + (i * 25)), 200, 20);
txtUgeMenuPris[i] = new TextField();
txtUgeMenuPris[i].setBounds(310, (40 + (i * 25)), 30, 20);
}
lblUgeMenuDato.setText("Dato:");
lblUgeMenuDato.setBounds(10, 10, 80, 30);
lblUgeMenuRetNavn.setText("Ret navn:");
lblUgeMenuRetNavn.setBounds(100, 10, 80, 30);
lblUgeMenuPris.setText("Pris:");
lblUgeMenuPris.setBounds(310, 10, 80, 30);
pnlUgeMenu.setBounds(intPanelLeft, intPanelTop, 350, 170);
pnlUgeMenu.setBorder(ttlBorderUgeMenu);
for(int i = 0; i < 5; i++)
{
pnlUgeMenu.add(txtUgeMenuDato[i], null);
pnlUgeMenu.add(txtUgeMenuRetNavn[i], null);
pnlUgeMenu.add(txtUgeMenuPris[i], null);
}
pnlUgeMenu.add(lblUgeMenuDato, null);
pnlUgeMenu.add(lblUgeMenuRetNavn, null);
pnlUgeMenu.add(lblUgeMenuPris, null);
contentPane.add(pnlUgeMenu, null);
addUgeMenuListeners();
}
public void makeGenerelMenu()
{
//pnlUgeMenu.setVisible(false);
//pnlGenerelMenu.setVisible(true);
for(int i = 0; i < 5; i++)
{
txtGenerelMenuRetNavn[i] = new TextField();
txtGenerelMenuRetNavn[i].setBounds(10, (40 + (i * 25)), 200, 20);
txtGenerelMenuPris[i] = new TextField();
txtGenerelMenuPris[i].setBounds(215, (40 + (i * 25)), 30, 20);
txtGenerelMenuSpecialInfo[i] = new TextField();
txtGenerelMenuSpecialInfo[i].setBounds(250, (40 + (i * 25)), 90, 20);
}
lblGenerelMenuRetNavn.setText("RetNavn:");
lblGenerelMenuRetNavn.setBounds(10, 10, 80, 30);
lblGenerelMenuPris.setText("Pris:");
lblGenerelMenuPris.setBounds(215, 10, 80, 30);
lblGenerelMenuSpecialInfo.setText("Speical info:");
lblGenerelMenuSpecialInfo.setBounds(250, 10, 80, 30);
pnlGenerelMenu.setBounds(intPanelLeft, intPanelTop, 350, 170);
pnlGenerelMenu.setBorder(ttlBorderGenerelMenu);
pnlGenerelMenu.setLayout(null);
for(int i = 0; i < 5; i++)
{
pnlGenerelMenu.add(txtGenerelMenuSpecialInfo[i], null);
pnlGenerelMenu.add(txtGenerelMenuRetNavn[i], null);
pnlGenerelMenu.add(txtGenerelMenuPris[i], null);
}
pnlGenerelMenu.add(lblGenerelMenuRetNavn, null);
pnlGenerelMenu.add(lblGenerelMenuPris, null);
pnlGenerelMenu.add(lblGenerelMenuSpecialInfo, null);
contentPane.add(pnlGenerelMenu, null);
repaint();
}
public void makeMenuBar()
{
mnuUgeMenu.setText("Uge Menu");
mnuGenerelMenu.setText("Generel Menu");
mnuAfslut.setText("Afslut");
mnuMenu.setText("Menu");
// Laver genvejstaster til menuBar'ens muligheder
mnuUgeMenu.setAccelerator (KeyStroke.getKeyStroke(49, 2));
mnuGenerelMenu.setAccelerator (KeyStroke.getKeyStroke(50, 2));
//mnuAfslut.setAccelerator (KeyStroke.getKeyStroke(
mnuMenu.add(mnuUgeMenu);
mnuMenu.add(mnuGenerelMenu);
mnuMenu.addSeparator();
mnuMenu.add(mnuAfslut);
mnuBar.add(mnuMenu);
this.setJMenuBar(mnuBar);
}
public void addListeners()
{
mnuUgeMenu.addActionListener(this);
mnuGenerelMenu.addActionListener(this);
mnuAfslut.addActionListener(this);
}
public void addUgeMenuListeners()
{
txtUgeMenuPris[0].addKeyListener(this);
}
public void actionPerformed(ActionEvent e)
{
contentPane.remove(pnlGenerelMenu);
contentPane.remove(pnlUgeMenu);
repaint();
if(e.getSource() == mnuUgeMenu)
{
//if(pnlUgeMenu.isVisible() != true) // Så den ikke kører koden, hvis panelet allerede er synligt
makeUgeMenu();
repaint();
}
else
if(e.getSource() == mnuGenerelMenu) // Så den ikke kører koden, hvis panelet allerede er synligt
{
//if(pnlGenerelMenu.isVisible() != true)
makeGenerelMenu();
}
else
if(e.getSource() == mnuAfslut)
System.exit(0);
}
public void keyPressed(KeyEvent k)
{
//System.out.println(k.getKeyCode());
}
public void keyTyped(KeyEvent k)
{
}
public void keyReleased(KeyEvent k)
{
}
public static void main(String args[])
{
MenuGui guiMenu = new MenuGui();
guiMenu.setSize(610, 250);
guiMenu.setVisible(true);
// Når programmer lukkes via krydset i øverste højre hjørne
guiMenu.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
