[JAVA] Contenuto Frame compare solo se ridimensionata
Inviato: gio 18 giu 2009, 17:37
Ciao. E' tutto il pomeriggio che sto perdendo la testa a capire perchè in questa applicazione grafica, quando creo MainFrame , i componenti si vedono solo se ridimensiono la finestra (anche di pochissimo, sia se l'allargo che se la restringo). Posto tutto il codice della classe MainFrame, anche se l'errore probabilmente sarà nel metodo initGUI().
Grazie a chi mi darà una mano.
Grazie a chi mi darà una mano.
Codice: Seleziona tutto
package gui;
import javax.swing.*;
import model.StopFactory;
import routing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class MainFrame extends JFrame implements ActionListener {
static final long serialVersionUID = 1L;
private FullRouteCalculator routeCalculator;
private JLabel partenzaLabel;
private JLabel arrivoLabel;
private JComboBox partenzaComboBox;
private JComboBox arrivoComboBox;
private JPanel selectionPanel;
private JPanel partenzaArrivoPanel;
private JPanel searchPanel;
private JLabel changeLabel;
private JComboBox changeComboBox;
private JButton searchButton;
private JPanel outputPanel;
private JTextArea outputArea;
public MainFrame()
{
super();
this.routeCalculator = new FullRouteCalculator();
initGUI();
}
public void initGUI()
{
this.setLayout(new BorderLayout());
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(screenSize.width/2, screenSize.height/2);
this.setLocation((int)(screenSize.width - getWidth()) / 2, (int)(screenSize.height - this.getHeight())/2);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
selectionPanel = new JPanel();
selectionPanel.setLayout(new GridLayout(2, 1));
{
partenzaArrivoPanel = new JPanel();
FlowLayout layout = new FlowLayout();
layout.setHgap(15);
partenzaArrivoPanel.setLayout(layout);
{
partenzaLabel = new JLabel("Partenza: ");
partenzaComboBox = new JComboBox();
partenzaArrivoPanel.add(partenzaLabel);
partenzaArrivoPanel.add(partenzaComboBox);
arrivoLabel = new JLabel("Arrivo: ");
arrivoComboBox = new JComboBox();
partenzaArrivoPanel.add(arrivoLabel);
partenzaArrivoPanel.add(arrivoComboBox);
changeLabel = new JLabel("Cambi: ");
changeComboBox = new JComboBox();
changeComboBox.addItem("0");
changeComboBox.addItem("1");
changeComboBox.addItem("2");
changeComboBox.addItem("3");
partenzaArrivoPanel.add(changeLabel);
partenzaArrivoPanel.add(changeComboBox);
}
populateComboBoxes();
searchPanel = new JPanel();
searchPanel.setLayout(new FlowLayout());
{
searchButton = new JButton("Cerca");
searchButton.addActionListener(this);
searchPanel.add(searchButton);
}
}
selectionPanel.add(partenzaArrivoPanel);
selectionPanel.add(searchPanel);
outputPanel = new JPanel();
outputArea = new JTextArea(50, 100);
outputPanel.add(outputArea);
this.getContentPane().add(selectionPanel, BorderLayout.NORTH);
this.getContentPane().add(outputPanel, BorderLayout.WEST);
}
public void populateComboBoxes()
{
StopFactory factory = StopFactory.getInstance();
for(String a : factory.getStopsNames())
{
partenzaComboBox.addItem(a);
}
for(String a : factory.getStopsNames())
{
arrivoComboBox.addItem(a);
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == searchButton)
{
try
{
ArrayList<Route> routeSet = routeCalculator.calculate(partenzaComboBox.getSelectedItem().toString(), arrivoComboBox.getSelectedItem().toString(), Integer.parseInt((String)changeComboBox.getSelectedItem()));
for(Route a : routeSet)
{
outputArea.append(a.toString());
outputArea.append("\n");
}
}
catch(Exception ex)
{}
}
}
}