Gå til innhold

GUI - plassere noe i hjørnet av et panel


Anbefalte innlegg

Hei.

 

Kjapt spørsmål.

 

Programmerer GUI'et til en kalender, og lurer på hvordan jeg skal få til å plassert noe i det øvre høyre hjørnet av et panel (ønsker tall på hver dag av kalendervisningen, foreløpig er de plassert i midten, helt til høyre)

 

Jeg vet at jeg kan bruke BorderLayout til å plassere noe i sentum, øst, vest, nord eller sør, men er usikker på hvordan jeg skal få til plassering i et hjørne når nummeret er det eneste jeg vil ha i panelet.

Lenke til kommentar
Videoannonse
Annonse

Etter litt frem og tilbake endte jeg opp med dette:

 

import java.awt.Color;
import java.awt.Font;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class PanelExample extends JFrame{

   private JPanel example;                         //panelet vi bruker
   private JLabel text1;                           //teksten vi bruker

   //konstruktøren
   public PanelExample(){
       super("Panel Eksempel");

       example = new JPanel();                         //her lager vi panelet
       text1 = new JLabel();                           //her er labelen som skal inneholde teksten

       //setter bakgrunnsfarge på teksten og panelet for å skille dem ut
       example.setBackground(Color.gray);
       text1.setBackground(Color.yellow);

       //mer tekst-label tilpasning
       text1.setHorizontalAlignment((int) LEFT_ALIGNMENT);
       text1.setFont(new Font("Times New Roman",0,48));
       text1.setText("1");
       text1.setVerticalAlignment((int) TOP_ALIGNMENT);
       text1.setOpaque(true);

       //I denne følgende koden som jeg snappet fra NetBeans, så lager den
       //layout på denne måten:

       //For panel layout
       GroupLayout panelLayout = new GroupLayout(example);
       example.setLayout(panelLayout);

       panelLayout.setHorizontalGroup(
               panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                   .addGroup(panelLayout.createSequentialGroup()
                       .addComponent(text1))
               );

       panelLayout.setVerticalGroup(
               panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                   .addGroup(panelLayout.createSequentialGroup()
                       .addComponent(text1))
               );
       //------------------------------------------------------------------------------------------

       //For layout
       GroupLayout layout = new GroupLayout(getContentPane());
       getContentPane().setLayout(layout);

       layout.setHorizontalGroup(
               layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                   .addComponent(example, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   );

       layout.setVerticalGroup(
               layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                   .addComponent(example, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   );
       //------------------------------------------------------------------------------------------

       setSize(200, 200);                                      //sett vindustørrelse
       setDefaultCloseOperation(EXIT_ON_CLOSE);                //lukk vinduet etter avslutning
       setVisible(true);                                       //gjør vinduet synlig
   }

   //start eksempelet
   public static void main(String[] args) {
       new PanelExample();
   }

}

 

Jeg anbefaler deg å bruke NetBeans sin "JFrame form" verktøy for å opprette kalenderen din i. Den er lett å bruke og skriver koden for deg mens du designer programmet ditt i realtime.

Mulig at også andre IDE-er har slike verktøy men jeg har kun erfaring med NetBeans. Lykke til!

Endret av dejanV
Lenke til kommentar

takk for svar! fant også ut at jeg kunne putte inn et argument til i JLabel (JLabel.RIGHT), og angi BorderLayout.NORTH, så gjorde det samme nytten =)

 

 

private class CalendarDays extends JPanel{

 

public CalendarDays(int dayOfMonth){

setLayout(new BorderLayout());

String dayOfMonthString = Integer.toString(dayOfMonth);

JLabel fillDayOfMonth = new JLabel(dayOfMonthString, JLabel.RIGHT);

add(fillDayOfMonth, BorderLayout.NORTH);

}

}

Endret av Yzma
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...