Problem z GUI.

0

Mam zadanie, aby stworzyć GUI, gdzie we Frame jest TextField, gdzie wprowadzam liczbę, Button który służy jako ActionListener, i na dole ma być (zapewne) Label. Na czym program ma polegać? Wpisuję w pole tekstowe liczbę dodatnią, a po kliknięciu przycisku pokazuje mi tak długi jak liczba trójkąt pascala. Na razie doszedłem do tego, że po kliknięciu przycisku ten trójkąt pojawia mi się w konsoli, natomiast nie wiem jak za pomocą samych setText-ów w Labelu obsłużyć dwuwymiarową tablicę z danymi, zwłaszcza że deklaruję wcześniej, że deklaruję wcześniej dla Frame GridLayout na trzy pola (wpisanie, przycisk i miejsce na dane - miejsca jest jedna linijka tekstu, a trójkąt ma więcej). Może jakieś inne, lepsze pomysły są na to?

0

Ja bym użył JTextArea umieszczczone na JScrollPane.
Coś takiego:
screenshot-20170404103758.png
Jeszce dwie uwagi:

  • GridLayout jest w tym zadaniu złym rozkładem, w GridLayout wszystkie komponenty maja taki sam rozmiar,a Ty potrzebujesz "bardzo duże" wyjście oraz normalne "wejście" i przycisk,
  • przycisk nie jest konieczny, ja ułatwiam życie użytkownikowi i podpinam ActionListener do "wejścia", wtedy starczy napisać liczbę i nacisnąć Enter.
0

Mam jedynie problem z TextArea, nie wiem jak wycentrować tekst. Szukam już chyba od godziny i nic totalnie nie znalazłem. Zrobienie takiej klasy jak poniżej nie pomaga

import java.awt.*;
 
public class MyTextArea extends TextArea{

	public MyTextArea(String text, int rows, int columns)
 	{
 		setEditable(false);
 		final float CENTER_ALIGNMENT = 1;
 		
 	}	
 }
0

Musisz sam centrować, np. tak

Font f = new Font("monospaced",Font.PLAIN,12);
output.setFont(f);
...
String[] result = new String[n+1];
...
int dl = result[n].length();
output.setText("");
for(int i=0;i<=n;i++)
{
       StringBuilder sb = new StringBuilder("");
       for(int j=0;j<=(dl-result[i].length())/2;j++)
       {
               sb.append(" ");
       }
       output.append(sb.toString()+result[i]+"\n");
 }
0

Ale to wtedy trójkąt mi się wysypie, gdy będą liczby dwucyfrowe mieszać się z jednocyfrowymi, robiłem już za pomocą for i wyszło krzywo.. Swoją drogą jeszcze pytanie mam odnośnie tego, jak mogę zmienić wysokość TextArea w zależności od wpisanej liczby? Mam na 10 linijek wysokości, i na przykład jak wpisuję 20 w pole tekstowe to ma mi się rozciągnąć do 20 wierszów.

0
  1. Nie rozsypie się, spójrz na obrazek wyżej.
  2. Metoda setRows.
0

Ja mam taki kod i wychodzi mi dość krzywy, natomiast co do tamtej metody nie działa mi, może źle implementuję, mógłbyś mi jakiś przykład pokazać?

0

Nieważne, już ogarnąłem gdzie miałem błąd, dziękuję za pomoc :)

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