login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > Java > JAVA Deel 7 (Layouts in SWING)
Pagina:

Reacties op de tutorial JAVA Deel 7 (Layouts in SWING)


Offline  Fenrir
Gepost op: 06 juni 2005 - 20:19
PHP expert

Is het ook mogelijk om net zoals in C# de positie van een element in pixels te zetten. Dus dat je de pixels van de top van het window, en de pixels van de linkerkant v/h window opgeeft, en dat java het dan precies daar plaatst?

Want ik begrijp niet hoe je een goede indeling kunt maken in deze layouts.

Offline  nemesiskoen
Gepost op: 12 juni 2005 - 21:47
Gouden medaille

PHP expert


dat doe je via insets
Ik maak hiervoor een nieuwe class aan die de waarden bepaald.
Dan maak ik een object aan dat verwijst naar de class.
De class erft eigenschappen over van JPanel en maakt het dus eig een panel.

Dan krijg je ong zoiets:

  1. <?php
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5.  
  6. class MijnPaneel extends Panel {
  7.  
  8. MijnPaneel(LayoutManager l) {
  9.  
  10. setLayout(l);
  11.  
  12. }
  13. public Insets insets() {
  14.  
  15. //weer afstanden maken tussen de buttons
  16. //je kan bv. de vier waardes laten meegeven door de constructor
  17. return new Insets(20,20,20,20);
  18.  
  19. }
  20. }
  21.  
  22. public class afstanden extends JFrame {
  23.  
  24. private MijnPaneel P1;
  25.  
  26. private JButton b1;
  27. private JButton b2;
  28. private JButton b3;
  29. private JButton b4;
  30.  
  31. public afstanden() {
  32.  
  33. super("afstanden");
  34.  
  35. Container c = getContentPane();
  36. c.setLayout(new GridLayout(2,2));
  37.  
  38. b1=new JButton("Een");
  39. b2=new JButton("Twee");
  40. b3=new JButton("Drie");
  41. b4=new JButton("Vier");
  42.  
  43. P1 = new MijnPaneel(new GridLayout(2,2,10,20));
  44.  
  45. P1.add(b1);
  46. P1.add(b2);
  47. P1.add(b3);
  48. P1.add(b4);
  49.  
  50. c.add(P1);
  51.  
  52. setSize( 800, 800 );
  53.  
  54. show();
  55. }
  56. //dit zorgt voor de afstanden tussen 'boven, links, rechts en onder' en de panel P1
  57. public Insets insets() {
  58.  
  59. return new Insets(50,50,50,50);
  60.  
  61. }
  62. public static void main( String argumenten[] ) {
  63.  
  64. afstanden afstand = new afstanden();
  65.  
  66. }
  67.  
  68. }



en ik ben er zéker van dat het in C# nog gemakelijker gaat, en nog logischer etc etc etc... maar zo gaat het nu eenmaal in JAVA.
En dit brengt wel het voordeel met zich mee dat deze class te draaien valt op Linux.

Offline  Fenrir
Gepost op: 23 augustus 2005 - 20:30
PHP expert

OK, bedankt! BTW, ik ben niet tegen Java hoor cross-platform is fantastisch, en de layouts in Java zijn vast handig, alleen ik ben gewend aan buttons positioneren dmv pixels. (button.SetPosition(10, 100))

Maar nu we toch bij linux komen: ik vind de swing-look nogal lelijk, en ik heb op de java-website ook gevonden hoe je de look-and-feel van je OS kunt gebruiken.

http://java.sun.../plaf.html

  1. public static void main(String[] args)
  2. {
  3. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  4. new SwingApplication(); //Create and show the GUI.
  5. }


Maar nu heeft hij een ClassNotFoundException...

Moet ik wat doen met een classpath ofzo? Maar ik weet niet waar deze class staat.

Ik compileer met Ant:

  1. <javac srcdir="." destdir="build"/>
  2. <java classname="SwingApplication" classpath="build" fork="yes" />


Dus kan ik bij classpath="build" nog een path toevoegen met de class voor de system-lookandfeel, zo ja, wat is dat dan?

Of zit ik nu helemaal fout, en doe ik wat anders verkeerd?

Offline  nemesiskoen
Gepost op: 27 augustus 2005 - 22:04
Gouden medaille

PHP expert


Bij het eerste:
Vind hij 1 van de 2 classes niet.
Je zou gaan kunnen nakijken welke:
  1. public static void main(String[] args)
  2. {
  3. try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  4. }
  5. catch(ClassNotFoundException cnfe) {
  6. System.out.println("Eerste");
  7. }
  8. try {
  9. new SwingApplication(); //Create and show the GUI.
  10. }
  11. catch(ClassNotFoundException cnfe2) {
  12. System.out.println("Tweede");
  13. }
  14. }

Ik denk zelf dat het bij het eerste zal zijn: "UIManager". En dat je deze ergens moet downloaden.
Bij het tweede: Ikzelf compileer niet met Ant en heb ook geen idee hoe het werkt:(.Sorry...

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.066s