Avatar billede gigabooster Nybegynder
03. maj 2002 - 09:37 Der er 8 kommentarer og
1 løsning

Panels/Buttons

Jeg har et spørgsmål angående grafisk opsætning af knapper i en frame... der skulle være noget med man kan sætte borderlayout til NULL istedet for South, North osv. og derved selv bestemme ved hjælp af X og Y hvor præsist på skærmen man vil placere sine knapper, labels osv. Er der nogle der kan hjælpe? Har skrevet buttons.setLayout(null) i panelet og vil nu gerne vælge præsist hvor hver enkelt knap skal placeres...
Avatar billede disky Nybegynder
03. maj 2002 - 10:00 #1
Hvis du bruger forte til udvikling følger der en layout type med som hedder 'AbsolutLayout' den kan netop det du ønsker.

Ingen af suns layout typer kan der per default, du kan dog tvinge dem til det, ved at sætte nogle constraint på componenterne.
Avatar billede thums Praktikant
03. maj 2002 - 10:02 #2
Du kan opnå den ønskede effekt med Gridbaglayout istedet for border layout...

programmeringen kan se ud som følgende....(er et udpluk af hvad jeg har i en GUI-fil)

private GridBagLayout layout = new GridBagLayout();

getContentPane().setLayout(layout);
GridBagConstraints con;

stiLabel = new JLabel( "Sti:" );
con = createGBC( 1, 1, 1, 1 );
con.insets = new Insets( 0, 15, 0, 15 );
add( stiLabel, con );

//***Service-metoder

private GridBagConstraints createGBC( int x, int y, int width, int height )
{
  GridBagConstraints gbc = new GridBagConstraints();
     
  gbc.gridx = x;
  gbc.gridy = y;
     
  gbc.gridwidth = width;
  gbc.gridheight = height;
     
  return gbc;
}
   
    private void add( JComponent component, GridBagConstraints gbc )
    {
      layout.setConstraints( component, gbc );
      getContentPane().add( component );
    }
Avatar billede gigabooster Nybegynder
03. maj 2002 - 10:41 #3
er forte noget der kan bruges til java???
Avatar billede gigabooster Nybegynder
03. maj 2002 - 10:42 #4
kan du gi en lidt bedre beskrivelse??? evt et totalt simpelt eks på hvordan det virker. evt bare med en enkelt knap. jeg er ikke lige en haj til java... håber du gider hjælpe
Avatar billede disky Nybegynder
03. maj 2002 - 10:54 #5
forte er det absolut bedste udvikling miljø til Java, og så er det helt gratis, kan hentes fra www.javasoft.com

Hvis du ikke er en haj til java vil jig give dig et lille tip.

Drop enhver tanke om at lave absolut positionering af knapper osv, lad java styre det, så kan dine programmer også bruges hvis man resizer vinduet osv.
Avatar billede thums Praktikant
03. maj 2002 - 10:57 #6
Her er den fil som jeg har udplukket det andet fra-... håber du kan bruge det til noget....... og ja... Forte er et program til at udvikle Java på lige fod med Kawa...


import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Gui extends JFrame implements ActionListener
{
  private JButton findButton;
  private JLabel stiLabel;
  private JTextField stiField;
  private GridBagLayout layout = new GridBagLayout();
 
  public Gui(String title)
  {
    super( title );

    getContentPane().setLayout(layout);
    GridBagConstraints con;

    stiLabel = new JLabel( "Sti:" );
    con = createGBC( 1, 1, 1, 1 );
    con.insets = new Insets( 0, 15, 0, 15 );
    add( stiLabel, con );
   
    stiField = new JTextField( 8 );
    con = createGBC( 2, 1, 1, 1 );
    con.insets = new Insets( 0, 0, 1, 0 );
    add( stiField, con );
       
    findButton = new JButton( "Find filer" );
    findButton.addActionListener( this );
    con = createGBC( 2, 2, 1, 1 );
    con.insets = new Insets( 1, 0, 15, 0 );
    add( findButton, con );
   
//    Tabel start
    PlanTabelModel tableModel = new PlanTabelModel();
    JTable tableView = new JTable(tableModel);
   
    // Renderer til centreret tekst
    tableView.getColumn(tableModel.getColumnName(0)).setCellRenderer(new CentreretTextRenderer());
   
    for ( int col=2; col<tableModel.getColumnCount(); col++ )
      tableView.getColumn(tableModel.getColumnName(col)).setCellRenderer(new CentreretTextRenderer());
   
    // plads til filnavn
    tableView.getColumn(tableModel.getColumnName(1)).setPreferredWidth(170);
   
    JScrollPane pane = new JScrollPane(tableView);
    con = createGBC( 1, 3, 3, 1 );
    add(pane, con);
//    Tabel slut */
   
    addWindowListener( new ApplicationTerminator() );
   
    pack();
    setVisible( true );
  }
 
  public void actionPerformed( ActionEvent e )
  {
    Mp3 liste = new Mp3();
    Vector resultat = new Vector();
    try
    {
      String sti = stiField.getText();
     
      Object source = e.getSource();
     
      if ( source == findButton )
        resultat = liste.findFiler(sti);
    System.out.println(resultat);   
        // Det halve
        //resField.setText( "" + (arg/2) );
      /*else if ( source == dobbeltButton )
        // Det dobbelt
        resField.setText( "" + (arg*2) );*/
    }
    catch ( NumberFormatException ex ) {
      //resField.setText( "Fejl" );
    }
  }
 
//*** Service-metoder
    private GridBagConstraints createGBC( int x, int y, int width, int height )
    {
      GridBagConstraints gbc = new GridBagConstraints();
     
      gbc.gridx = x;
      gbc.gridy = y;
     
      gbc.gridwidth = width;
      gbc.gridheight = height;
     
      return gbc;
    }
   
    private void add( JComponent component, GridBagConstraints gbc )
    {
      layout.setConstraints( component, gbc );
      getContentPane().add( component );
    }
}
Avatar billede jword Nybegynder
03. maj 2002 - 11:09 #7
Hvis du sætter layout på en container til null kan du positionere dine komponenter som det passer dig via Component.setBounds... lille eksempel:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class Test extends JFrame {



    public Test() {
       
        getContentPane().setLayout(null);
       
        JButton button1 = new JButton("hello world");
       
        button1.setBounds(40,50,200,60);
       
        JButton button2 = new JButton("bla bla bla bla bla bla");
       
        button2.setBounds(130,30,150,70);
       
        getContentPane().add(button1);
       
        getContentPane().add(button2);
       
       
        pack();
       
        setSize(new Dimension(400,300));
       
        addWindowListener(new WindowAdapter() {
       
            public void windowClosing(WindowEvent e) {
                System.exit(0);
                }
                });
               
        show();
       
    }
   
    public static void main(String[] args) {
       
        new Test();
       
    }
   
}
Avatar billede disky Nybegynder
03. maj 2002 - 11:16 #8
thums:
På lige fod med kawa, det tror jeg næppe.

Kawa var engang det bedste værktøj til java, men det er efterhånden mange år siden, idag halter det kraftigt bagefter.
Avatar billede thums Praktikant
03. maj 2002 - 14:18 #9
Disky...... Forte er bedre til det funktionelle ja..... men stadigvæk alt for rodet at sætte sig ind i...... og Kawa kan hvad det skal.. nemlig det essentielle at du kan programmere i det, og compile det.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester