Bardzo dziwny problem z komponentem Choice

0

Witam
Mam następujący problem. Dodaję obiekt Choice(listy rozwijanej) do widocznego panelu(JPanel).
Widoczność obu elementów ustawiona na true. Po uruchomieniu programu, listy w ogóle nie widać. Co więcej jeżeli kliknę w puste pole w którym teoretycznie powinien znajdować się komponent listy, ten nagle się pojawia. W momencie kiedy ustawię fokus na innym elemencie typu pole tekstowe moja lista znika z powrotem. Rozmawiałem ze swoim prowadzącym na uczelni lecz nie był w stanie mi powiedzieć co może być nie tak. Co najlepsze gdy przeniosę projekt na inny komputer to wszystko widać jak należy. Lista jest wyświetlana. Reinstalacja javy, oraz zmiana wersji kompilatora(obecnie używam Eclipse juno lub indigo) nic nie pomogła. Dodam też, że metody typu repaint(), validate() nic nie zmieniają. Ewidentnie problem występuje tylko na moim komputerze. Pracuję na windows 7. Bardzo proszę o pomoc bo idzie się załamać, że u innych działa, tylko u mnie nie.

Pozdrawiam

1

Ewolucja - z 'u mnie dziala' na 'u mnie nie dziala'.

0

A czego oczekujesz? Mamy wrozyc z fusow? Dawaj koda jak chcesz zeby ktos cokolwiek mogl powiedziec.

0

Na niektórych linuksach bywa zainstalowana "inna java", nie Oracle (Sun). Z mojego doświadczenia wynika, że na tej innej Javie źle działa biblioteka Swing.

0

A czego oczekujesz?

Oczekuję, że może ktoś kto natrafił na podobny problem się wypowie. Szczerze wątpię, że z kodu da się taki błąd wyczytać ponieważ jest zgodny z tysiącem kodów example, tym bardziej, że tak samo powiedziała osoba wykwalifikowana w tej dziedzinie.

Oczywiście kodem chętnie się podzielę:

public class EditUserPanel extends WorkArea_ABSTRACT
{
	private static final long serialVersionUID = 1L;
	private GridBagConstraints gbc;
	private Choice list;
	private JTextField nameTF;
	
	public EditUserPanel()
	{
		initializeComponents();
		addComponents();
	}
	
	private void initializeComponents()
	{
		gbc = new GridBagConstraints();
		list = new Choice();
		nameTF = new JTextField();
		list.add("aaa");
		list.setBackground(Color.BLUE);
	}
	
	private void addComponents()
	{
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridx = 0;
		gbc.gridy = 0;
		list.setVisible(true);
		list.setSize(new Dimension(150,250));
		add(list,gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 2;
		add(nameTF,gbc);
		repaint();
	}
}
public abstract class WorkArea_ABSTRACT extends JPanel
{
	private static final long serialVersionUID = 1L;
	
	public WorkArea_ABSTRACT()
	{
		Color color=new Color(151,155,170); 
		setBackground(color);
		setLayoutManager();
	}
	
	private void setLayoutManager()
	{
		GridBagLayout gbl = new GridBagLayout();
		setLayout(gbl);
	}
}

Na niektórych linuksach bywa zainstalowana "inna java", nie Oracle (Sun). Z mojego doświadczenia wynika, że na tej innej Javie źle działa biblioteka Swing.

Taka przyczyna brzmi dosyć prawdopodobnie lecz wziąłem również instalkę javy z której instalował mój kolega u którego wszystko działa.

Aż zacząłem rozważać format i reinstalację systemu, chociaż wolałbym tego uniknąć.

0

Pobierz sobie stąd: http://www.oracle.com/technetwork/java/javase/downloads/index.html NetBeansa wraz z Javą. Poza tym polecam Ci zaznajomić się z Linuxem :) Pod windowsem często są problemy różne dziwne ;)

Jeśli upierasz się nad Eclipse to pobierz sobie najnowszą wersję JDK. Znajdziesz ją pod powyższym linkiem. Musisz mieć JDK żeby programować w Javie :) Pod Linuxem inna wersja Javy to prawda. Ale nie ma problemu z zainstalowaniem tej od Oracla :)

Powodzenia :)

1

Może się mylę, ale mi się wydaje, że to wynika z mieszania komponentów AWT i Swing.
Weź zamiast Choice użyj JCombobox i zobacz co się wtedy będzie działo.

0

Pobierz sobie stąd: http://www.oracle.com/technetwork/java/javase/downloads/index.html NetBeansa wraz z Javą. Poza tym polecam Ci zaznajomić się z Linuxem Pod windowsem często są problemy różne dziwne

Oczywiście spod tego adresu pobrałem javę na samym początku lecz nic z tego. Co do linuxa to na pewno masz rację. Choć to wymaga trochę czasu, a problem nie może czekać.

Może się mylę, ale mi się wydaje, że to wynika z mieszania komponentów AWT i Swing.
Weź zamiast Choice użyj JCombobox i zobacz co się wtedy będzie działo.

JCombobox działa jak trzeba :] Mimo iż należę do osób, które wolą rozwiązywać problemy niż je omijać(w kwestii programowania oczywiście) to będę musiał zadowolić się tym rozwiązaniem. Serdeczne dzięki za odpowiedzi, a poniżej zrobiłem filmik demonstracyjny tego co się dzieje:

Być może ktoś kiedyś tutaj zajrzy znający oficjalne uzasadnienie takiego zachowania i nam o tym powie. W moim programie występuje jeszcze jeden dziwny problem ale to już sprawa na inny wątek.

0

Widzisz, pokazales kod i zaraz ktos podal trafna odpowiedz. A teraz przepros za swoje nastawienie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1