Springen naar inhoud

Resize van button in java gui


  • Log in om te kunnen reageren

#1

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 19 februari 2011 - 17:02

Hallo,

ik ben een beetje aan het experimenteren met de GUI geleverd door de swing-lib van java, maar ik stoot op het volgende probleem:

mEnlargeButton.setBounds(5, 5, 40, 40);

zou, naar mijn mening de button quasi lingsboven op het panel moeten plaatsen en een hoogte en breedte geven van 40 px.

Als ik run, blijft de knop echter hardnekkig gecentreerd staan in het midden en bovenaan.
java.png
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 19 februari 2011 - 17:27

Ook het volgende levert geen resultaat:

Box boxVertical = Box.createVerticalBox();
Box boxHorizontal = Box.createHorizontalBox();


Container container = getContentPane(); // hierin zetten we onze componenten
container.add(boxVertical);


mEnlargeButton = new JButton("Do something");
boxVertical.add(Box.createVerticalStrut(10)); // verticale spatie boven de button
boxVertical.add(mEnlargeButton);
mEnlargeButton.setAlignmentX(LEFT_ALIGNMENT);

"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#3

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 19 februari 2011 - 19:14

Heb je expliciet 'null' in de constructor gezet van je JPanel?
Dus: JPanel(null)
Anders werks setBounds(...) niet, want dan wordt de layout bepaald door de layoutManager van de JPanel

Edit: ik zie juist in je code stukje, dat je niet rechtstreeks met een JPanel werkt.
Voeg volgende lijn voordat je de button toevoegt eens toe: container.setlayout(null)
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#4

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 20 februari 2011 - 09:12

Erg bedankt, ik zal de tip goed onthouden!
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#5

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 20 februari 2011 - 11:04

Bij dit soort vragen is een Short, Self Contained, Correct (Compilable), Example vaak erg handig.

#6

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 20 februari 2011 - 11:27

Ik zat nog met een conceptuele vraag, di neerkomt op het volgende.


Ik heb een class, waarin ik een nieuw frame aanmaak.
SimpleFrameLayout frame = new SimpleFrameLayout("Simulatie");

Binnen de SimpleFrameLayout, maak ik twee Panels aan, mypanel en mypanel2.
Op eke panel plaats ik verschillende knoppen.

Nu beschouw ik het ene panel als een soort knoppenbalk met bepaalde opties die niet altijd even relevant zijn. Op het andere panel had ik dus graag een knop show/hide toegevoegd om het eerste panel te verbergen.


Ik wil dus een method schrijven Hide(Panel mypanel) die het volgende inhoudt:
mypanel.setVisible(false);

en die om het even welk panel op mijn frame kan verbergen.

Waar moet ik nu die functie plaatsen, en hoe zorg ik ervoor dat de panels die zijn toegevoegd op het frame, zichtbaar zijn zodat ik ze als argument kan meegeven?

Ik vraag zeker geen hele code, ik vraag me enkel af met welke redenering ik zelf tot het antwoord op deze vraag zou kunnen komen?
java2.png
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#7

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 20 februari 2011 - 20:35

Ik zat nog met een conceptuele vraag, di neerkomt op het volgende.
Waar moet ik nu die functie plaatsen, en hoe zorg ik ervoor dat de panels die zijn toegevoegd op het frame, zichtbaar zijn zodat ik ze als argument kan meegeven?

Je moet een ActionListener maken waarin je die methode plaatst. En die ActionListener moet je toevoegen aan je knop.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#8

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 27 februari 2011 - 13:18

Ik was je antwoord vergeten bekijken, (ik had het net gevonden ;) )maar alsnog bedankt voor je vraag.

Intussen ben ik een soortgelijk fenomeen tegengekomen:

Mijn Jslider resizet bij het het verslepen van de slideknop die erbij hoort...

Ik vind niet direct wat de reden ervan is.

Iemand die het wel weet of hetzelfde heeft meegemaakt?

Alvast bedankt!
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#9

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 27 februari 2011 - 13:25

Plak het stukje code betreffende de JSlider hier eens.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#10

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 27 februari 2011 - 14:14

JSlider voltSlider = new JSlider(20, 100, 65);

			voltSlider.setMinorTickSpacing(5);

			voltSlider.setMajorTickSpacing(20);

			voltSlider.setPaintTicks(true);

				voltSlider.setPaintLabels(true);

		   

			   voltSlider.addChangeListener(new ChangeListener() {

					  public void stateChanged(ChangeEvent evt) {

					  JSlider slider = (JSlider) evt.getSource();

					  if (!slider.getValueIsAdjusting()) {

					  int value = slider.getValue();

					  System.out.println(value);

					  voltage=value;

					  voltagebutton.setText("Set fixed at "+String.valueOf(voltage)+" V");

		  

		}

	  }

	});
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#11

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 02 maart 2011 - 10:05

Met bovenstaande code krijg ik je probleem niet gereproduceerd...
Ik zie er ook niets mis aan. (Buiten dat ik aanraad om elke overridende method ook daadwerkelijk met @Override te annoteren)
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#12

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 05 maart 2011 - 11:13

Het is inderdaad vreemd, want intussen krijg ik het probleem ook niet meer gereproduceerd (frisse herstart van de computer).

Het is inderdaad een goede top om de override expliciet aan te geven, bedankt!
"C++ : Where friends have access to your private members." — Gavin Russell Baker.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures