Bardzo dziwny problem z komponentem Choice

Bardzo dziwny problem z komponentem Choice
DA
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:30
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'.

DA
Bardzo dziękuję za pomoc
0

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

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
DA
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:30
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ę:

Kopiuj
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();
	}
}
Kopiuj
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ąć.

Kerai
"tak samo powiedziała osoba wykwalifikowana w tej dziedzinie" - Na jakiej zasadzie ta osoba jest wykwalifikowana?
mordimer
  • Rejestracja:około 14 lat
  • Ostatnio:około 12 lat
  • Postów:52
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 :)

A7
  • Rejestracja:ponad 14 lat
  • Ostatnio:4 miesiące
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.

edytowany 2x, ostatnio: Arctor75
DA
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:30
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.

edytowany 1x, ostatnio: daniio
A7
Pytanie: dlaczego koniecznie musisz mieć Choice a nie JCombobox? Ktoś Ci narzucił? Skoro inne elementy są Swingowe to i lista rozwijalna niech też będzie Swingowa.
DA
W żadnym wypadku nie upieram przy Choice i nikt mi tego nie narzucił. Lubię po prostu wiedzieć czemu tak, a nie inaczej. Tym bardziej, że jeszcze nigdzie(również w internecie) z takim problemem się nie spotkałem.
A7
Bardzo dobre wytłumaczenie dlaczego nie powinno mieszać się elementów AWT i Swing, dodatkowo ładnie pasujące do Twojego programu: http://www.devx.com/tips/Tip/14718
DA
Dzięki. To chyba najbardziej wartościowa odpowiedź w komentarzu powyżej.
0

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

DA
Przepraszać? Patrząc na formę naszych wypowiedzi to kolega przejawia owe "nastawienie".
DA
Ale mimo wszystko zwracam honor

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.