Gå til innhold

Anbefalte innlegg

Jeg skulle lage et GUI selv, bruker egentlig ikke NetBeans,

men prøvde å bruke det til inspirasjonskilde for å lage et GUI.

Da oppretter jeg knapper osv helt fint. Så kommer jeg til plasseringer,

noen steder jeg kan lese mer om parallele grupper osv. Eller hvordan lage

GUI generelt, for så å plassere slik som man skal. Eller evt, noen som

kan forklare litt om hva som skjer i koden under.

 

public class NewJFrame extends javax.swing.JFrame {

 

/** Creates new form NewJFrame */

public NewJFrame() {

initComponents();

}

 

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

// <editor-fold defaultstate="collapsed" desc=" Generated Code ">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jTextField1 = new javax.swing.JTextField();

jTextField2 = new javax.swing.JTextField();

jScrollBar1 = new javax.swing.JScrollBar();

jButton1 = new javax.swing.JButton();

 

org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(0, 100, Short.MAX_VALUE)

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(0, 100, Short.MAX_VALUE)

);

 

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTextField1.setText("jTextField1");

 

jTextField2.setText("jTextField2");

 

jButton1.setText("jButton1");

 

org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()

.addContainerGap(351, Short.MAX_VALUE)

.add(jScrollBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)

.add(32, 32, 32))

.add(layout.createSequentialGroup()

.add(22, 22, 22)

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(layout.createSequentialGroup()

.add(jButton1)

.addContainerGap())

.add(layout.createSequentialGroup()

.add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 155, Short.MAX_VALUE)

.add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)

.add(95, 95, 95))))

);

layout.setVerticalGroup(

layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(layout.createSequentialGroup()

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(layout.createSequentialGroup()

.add(93, 93, 93)

.add(jScrollBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))

.add(layout.createSequentialGroup()

.add(20, 20, 20)

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)

.add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)

.add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))

.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 136, Short.MAX_VALUE)

.add(jButton1))

);

pack();

}// </editor-fold>

 

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true);

}

});

}

 

// Variables declaration - do not modify

private javax.swing.JButton jButton1;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollBar jScrollBar1;

private javax.swing.JTextField jTextField1;

private javax.swing.JTextField jTextField2;

// End of variables declaration

 

}

Lenke til kommentar
Videoannonse
Annonse

Kan si at jeg har kommet så langt da på den "ekte versjonen"

 

public class meny extends javax.swing.JFrame

{

//Variabler som trengs for menyen

 

private javax.swing.JPanel menyPanel;

private javax.swing.JButton btnAvslutt;

private javax.swing.JButton btnLedigeHybler;

private javax.swing.JButton btnRegLeietaker;

private javax.swing.JButton btnFlyttLeietaker;

private javax.swing.JButton btnAutoRapportHusleie;

private javax.swing.JButton btnRegBetalingHusleie;

private javax.swing.JButton btnRapportTvangsFlytting;

private javax.swing.JButton btnOmsetning;

 

 

 

//Konstruktøren for menyen(her angis at menyen skal tegnes

 

public meny()

{

//kaller opp funksjonen/metode(java) drawMeny() som er

//lengre ned på siden.

drawMeny();

}

 

/**

* METODEN FOR Å TEGNE MENYEN

* denne kalles opp inni konstruktøren over i koden, og

* så instaliseres?(initializes) menyen. Ikke tull her, for

* da vil ikke menyen fungere:P

*/

 

//ja da begynner vi, denne funksjonen tar ingen

//argumenter(mottar ingen data når den kalles opp)

//ergo er det en void metode, som betyr at den ikke har

// noen return verdi.:

private void drawMeny(){

//angir navn på panelet som skal inneholde alle

//knapper og labler

 

menyPanel = new javax.swing.JPanel();

btnAvslutt = new javax.swing.JButton();

btnLedigeHybler = new javax.swing.JButton();

btnRegLeietaker = new javax.swing.JButton();

btnFlyttLeietaker = new javax.swing.JButton();

btnAutoRapportHusleie = new javax.swing.JButton();

btnRegBetalingHusleie = new javax.swing.JButton();

btnRapportTvangsFlytting = new javax.swing.JButton();

btnOmsetning = new javax.swing.JButton();

 

/** Setter 'navn' på knappene, altså hva som står inni

* selve knappene(f.eks Avslutt)

*/

 

btnAvslutt.setText("Avslutt");

btnLedigeHybler.setText("Ledige Hybler");

btnRegLeietaker.setText("Registrer Leietaker");

btnFlyttLeietaker.setText("Flytt Leietaker");

btnAutoRapportHusleie.setText("Ubetalt Husleie");

btnRegBetalingHusleie.setText("Betaling Husleie");

btnRapportTvangsFlytting.setText("Tvangs Flytting");

btnOmsetning.setText("Omsetning");

}}

Lenke til kommentar

Foreslår at du bruker SetLayout funksjonen i netbeans. Netbeans generer mye enklere kode med borderlayout og gridlayout f.eks.

 

BorderLayout kan være litt forvirrende i Designeren. Men bare dobbelt klipp på panelene i Navigatoren til venstre så kan du legge til Nord, sør osv i underpanelene.

 

Er mye greiere enn å bruke FreeDesign IMO. Spesielt dersom man skal dele koden med andre.

Lenke til kommentar

Når man bruker public void paint(graphics gfx){}

 

Da er det slik at når main kjører hopper den til denne metoden?

 

Hvordan kan man da komme ut av denne metoden, og kjøre et nytt vindu, altså slik at man kan få opp et gui i stedet for tegningen/grafen osv.

Lenke til kommentar
  • 2 uker senere...

Går ut i fra du arvet fra en klasse som har ovennevnte paint metode som en av sine metoder.

 

I såfall er det meningen at du skal implementere paint metoden til å tegne opp komponenten din. Du skal aldri kalle metoden selv, den vil bli kalt for deg. Du kan indirekte kalle metoden ved å kalle updateGraphics() - eller hva nå den metoden het...

 

La oss si at du har laget et gui med swing komponenter. Programmet vil da kalle paint metoden til alle synlige komponenter i tur og orden utfra hvilke containere de ligger i. Den nederst containeren sin paint metode blir kallt først. Den kaller så alle paint metodene til sine komponenter som er synlige, etc...

 

Mao, i det du i main metoden kaller show metoden til JFrame e.l. vil paint metoden bli kallt.

 

Du burde aldri lage nye vinduer e.l. i paint metoden.

 

Hvis du skal lage et nytt vindu burde du f.eks legge til en actionListener på en knapp og implementere actionPerformed metoden og lage en ny JFrame eller JInternalFrame, JDialog eller lignende derfra...

 

Anbefaler deg sterkt å lese swing tutorialen som ligger på java.sun.com - anbefaler også å bruke google til å søke ;)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...