![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Schönen guten Tag allerseits... da bin ich mal wieder 1. Ausrichtung der Komponenten innerhalb eines JPanels mit BorderLayout: offenbar ist die horizontale Ausrichtung beim BorderLayout so wie ich mir das wünsche -> BorderLayout.EAST = linksbündig, BorderLayout.CENTER = zentriert, BorderLayout.WEST = rechtsbündig (mehr brauche ich derzeit nicht). Aber die vertikale Ausrichtung ist immer "top". Das sieht dann aber nicht besonders schön aus, wenn die Komponenten in diesem Panel unterschiedliche Höhen haben. Wie kann ich das nun ändern? Mit JPanel#setAlignmentX(float) und setAlignmentY(float) komm ich irgendwie nicht klar, da ich durch den float-Parameter, den diese Methoden erwarten total verwirrt bin. Ich würde da eher ein int im Sinne eines Fields erwarten. setHorizontalAlignment(int), wie ich es z. B. vom Button kenne, um den Text auszurichten, gibt es für JPanel nicht. Also was tun? Wie bekomme ich die Komponenten denn nun anders ausgerichtet als default? 2. Ich habe einen JSpinner mit einem TitledEtchedBorder (also BorderFactory.createTitledBorder(BorderFactory.cre ateEtchedBorder(EtchedBorder.LOWERED), ...) gebaut. Sieht aber kagge aus, wenn die Buttons da so komisch rausfallen (siehe Grafik1). Gibt es eine Möglichkeit, wie ich die Buttons noch in den Rahmenbereich reinbekomme? Sun schafft es in seinem Tutorial doch auch (Grafik2), zwar nicht mit sonem Border wie ich ihn haben will, aber immerhin... *ratlossei* Grafik1 ![]() Grafik2 ![]() Thx in advance sayang |
| | |
| | Nach oben #2 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
So. nun hatte ich gleich nach Absenden des ersten Beitrags die Idee, den Spinner vorher noch in ein Panel zu packen und diesem den Border zu verpassen. Sieht auch viel besser aus: ![]() Was mir jetzt schleierhaft ist: warum hat das Panel jetzt einen so dicken inneren Rahmen (der platz zw. dem Spinner und dem Rand des Borders)? Hach, Swing ist doch eine wahre Freude Lg sayang |
| | |
| | Nach oben #3 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Zu 1) Was willst du den im Endeffekt erreichen? Ich bezweifle, dass das BorderLayout das ist, was du benutzen solltest. Zu 2b) Weil das vom LookAndFeel so vorgeschrieben wird. Die Einstellung solltest du auch nicht ändern, sonst sieht es furchtbar aus. In deinem Fall wäre es aber allgemein viel sinnvoller, ein Label vor den Spinner zu setzen. Ist benutzerfreundlicher. |
| | |
| | Nach oben #4 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Also, Das Panel um das es sich im 1. Problem handelt sieht derzeit folgendermaßen aus: ![]() Warum ich BorderLayout genommen hab? Hmm, weil es mir die Komponenten nicht - wie bei GridLayout - auf die Zellengröße anpasst und weil ich für eine "Zeile" von Komponenten keinen Sinn gesehen habe, ein GridBagLayout zu verwenden. Das einzige was nun noch passieren soll ist, dass die 4 Buttons vertikal am unteren Rand des Panels ausgerichtet werden. Welches Layout könntest/würdest du dafür empfehlen? Zu 2. Ich habe andere Komponenten auch mit einem solchen Rahmen eingerahmt und da ist dieser Rand nicht so dicke... wundert mich nur. Oder liegt es am Spinner? Und wenn es am Spinner liegt, warum könnte ich dem Spinner nicht sagen, dass er nicht sonen fetten Rand fabrizieren soll? Ist irgendwie alles verwirrend Lg sayang |
| | |
| | Nach oben #5 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Wegen des Randes: Dann hast du's falsch benutzt. Diesen Border setzt man _niemals_ bei irgendwas anderem als nem JPanel ein. Und bei dem Layout würde ich mir überlegen, ob ich es wirklich so haben will. Das ist nämlich ziemlich verwirrend. Wenn's aber unbedingt so sein muss: Nimm GridBagLayout oder versuch's mit ner Box, bzw. BoxLayout. |
| | |
| | Nach oben #6 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Hi pago, erstmal vielen Dank für deine tatkräftige Unterstützung Code: SpinnerModel model = new SpinnerNumberModel(...);
JSpinner spinner = new JSpinner(model);
spinner.setPreferredSize(new Dimension(120,24));
JPanel spinnerPanel = new JPanel();
spinnerPanel.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
"# of genes for output",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION,
new Font("SansSerif", Font.PLAIN, 12)));
spinnerPanel.add(spinner);
actionPanel.add(spinnerPanel, BorderLayout.WEST); //Der im obigen Beitrag dargestellte Panel mit dem derzeitigen BorderLayout
Melde mich dann wieder. Lg und gute Nacht sayang |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Swing Layouts erklären | ex³ | Desktop-Applikationen und Grafik | 11 | 03.08.2006 14:30 |
| Warning: not compatibele with future Swing releases | Ben | Allgemeine Java-Programmierung | 4 | 10.03.2006 11:08 |
| Java SWING | Basti77 | Literatur | 6 | 12.08.2005 11:19 |
| Spielfeld programmierung mit Swing (jComponent) | Maximum | Desktop-Applikationen und Grafik | 11 | 18.02.2005 23:55 |
| Grundlegende Frage zu Tabellen mit Swing | Herr Bö | Allgemeine Java-Programmierung | 1 | 02.08.2004 19:52 |