Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 17:06 Der er 17 kommentarer og
1 løsning

JTextArea kommer frem forkerte steder

Vi sidder med en gui med et JTappedPane hvor vi har 4 JPanel (4 faneblade). Vores problem er nu at vi har nogle JTextAreas fra forskellige JPanels, der alle oven i hinnanden, når man starter programmet. Hvis man trykker sig gennem alle fanebladene bliver fejlen rettet og de vises rigtigt!! Er der nogen der kender problemmet, eller har en ide om hvad der kunne være galt! Det skal lige siges at hvert JPanel ligger i sin egen klasse, og de bliver så bliver instantieret af en guiklasse, der desuden har selve JTappedPanet. men problemmet er der stadig selvom man har det hele i en klasse.
Avatar billede _carsten Nybegynder
09. december 2003 - 17:57 #1
Jeg er rimelig overbevist om at nogle af JTextArea's er TextArea's, derfor skinner de igennem

Altså AWT:    TextArea
      Swing:  JTextArea

I mixer AWT og Swing og lige netop i JTabbedPanes kan man IKKE gøre det!
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 18:20 #2
det er tilsyneladende ikke problemet, jeg har prøvet at skiftede alle til JTextArea. og derefter til TextArea. Ingen af delene afhjalp problemet!!
Avatar billede _carsten Nybegynder
09. december 2003 - 18:37 #3
Hmmmm - nå!!

Tja - måske layoutManager/ eller fast defineret størrelse på komponenter som gør det !

Kan i evt. poste kode fra et af panelerne ?
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 18:45 #4
Her er koden fra den ene klasse:

/** Klassen modellerer indstillingerne i systemet
*
* @author Rasmus Lund
*
*/
import javax.swing.*;
import java.awt.TextArea;

public class GuiIndstillinger {

    private JPanel indstilPanel;
    //Operations:

    /** Konstruktøren
    *
    */
    public GuiIndstillinger() {
        //do nothing
    }

    public JPanel getIndstillingPanel() {
        makeIndstillingPanel();
        return indstilPanel;
    }

    public void makeIndstillingPanel() {
        indstilPanel = new JPanel();
        indstilPanel.setLayout(null);

        // indstillinger

        JLabel labelsidehoved = new JLabel("SIDEHOVED");
        labelsidehoved.setBounds(10, 5, 80, 20);
        indstilPanel.add(labelsidehoved);

        JLabel labelAdresse2 = new JLabel("Adresse:");
        labelAdresse2.setBounds(10, 55, 80, 20);
        indstilPanel.add(labelAdresse2);

        TextArea areaAdr = new TextArea("", 5, 20);
        areaAdr.setBounds(90, 55, 250, 100);
        indstilPanel.add(areaAdr);

        JLabel labelDiv = new JLabel("Diverse:");
        labelDiv.setBounds(10, 180, 80, 20);
        indstilPanel.add(labelDiv);

        TextArea areaDiv = new TextArea("", 5, 20);
        areaDiv.setBounds(90, 180, 250, 100);
        indstilPanel.add(areaDiv);

        // Gem knap
        JButton buttonGem = new JButton("Gem");
        buttonGem.setBounds(400, 261, 70, 20);
        indstilPanel.add(buttonGem);

        // moms
        JLabel labelMoms = new JLabel("MOMS");
        labelMoms.setBounds(10, 300, 80, 20);
        indstilPanel.add(labelMoms);

        JLabel labelMoms2 = new JLabel("Moms:");
        labelMoms2.setBounds(10, 330, 80, 20);
        indstilPanel.add(labelMoms2);

        JTextField moms = new JTextField();
        moms.setBounds(90, 330, 70, 20);
        indstilPanel.add(moms);

        JLabel labelProc = new JLabel("%");
        labelProc.setBounds(170, 330, 80, 20);
        indstilPanel.add(labelProc);

        // Gem knap
        JButton buttonGem2 = new JButton("Gem");
        buttonGem2.setBounds(400, 330, 70, 20);
        indstilPanel.add(buttonGem2);

        indstilPanel.repaint();
    }
}
Avatar billede _carsten Nybegynder
09. december 2003 - 18:58 #5
Det skyldes jeres nullLayout!
Prøv at repainte panelerne når i har added dem til gui'en og se om det hjælper

Eller bedre - vælg BoxLayout, FlowLayout, GridLayout eller GridBagLayout
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 19:11 #6
Det hjælper ikke at repainte, og at vælge et nyt layout er en uoverskuelig ændring i programmets layout! har du ikke andre forslag inde det!!??? :)
Avatar billede _carsten Nybegynder
09. december 2003 - 19:21 #7
Jeg går udfra i kører nullLayout alle vegne, så det panel/frame/gui hvor i nu adder jeres JTabbedPane, prøv at rette bare det ene til BorderLayout og center
Det kunne snildt være løsningen!
Avatar billede _carsten Nybegynder
09. december 2003 - 19:22 #8
Eksempel:

getContentPane().add(mitJTabbedPane, java.awt.BorderLayout.CENTER);
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 19:29 #9
vi bruger BorderLayout iforvejen!
Avatar billede _carsten Nybegynder
09. december 2003 - 19:58 #10
Er nødt til forlade PC'en 1 times tid

Kan i poste gui'en ?
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 20:02 #11
Her er Gui'en

/** Klassen modellerer systemet GUI
*
* @author Rasmus Lund
*
*/

//import java.awt.TextArea;
//import javax.swing.table.AbstractTableModel;
//import javax.swing.table.*;
//import java.awt.geom.Line2D;
//import java.util.Calendar;
//import java.util.GregorianCalendar;
//import javax.swing.border.*;

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*;

public class Gui extends JFrame {
    private JTabbedPane tabbedPane;
    private JPanel fakturaPanel;
    private JPanel debitorPanel;
    private JPanel kundePanel;
    private JPanel indstilPanel;
    private JPanel topPanel;
    /** Konstruktøren - opretter Gui'en */
    public Gui() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Skumhus - ProSys BA2002");
        setSize(650, 680);
        setResizable(false);
        setBackground(Color.gray);

        topPanel = new JPanel();
        topPanel.setLayout(new BorderLayout());
        getContentPane().add(topPanel);

        // Create the tab pages
        createFaktura();
        createDebitorListe();
        createKunde();
        createIndstilling();

        // Create a tabbed pane
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Faktura", fakturaPanel);
        tabbedPane.addTab("Debitorliste", debitorPanel);
        tabbedPane.addTab("Kunde", kundePanel);
        tabbedPane.addTab("Indstilling", indstilPanel);
        topPanel.add(tabbedPane, BorderLayout.CENTER);
        topPanel.repaint();
        fakturaPanel.repaint();
        debitorPanel.repaint();
        kundePanel.repaint();
        indstilPanel.repaint();
        indstilPanel.repaint();
       
    }

    /** Opretter en instands af GUI'en for fakturaen og tilføjer den */
    public void createFaktura() {
        GuiFaktura fakturaGui = new GuiFaktura();
        this.fakturaPanel = fakturaGui.getFakturaPanel();
    }

    /** Opretter en instands af GUI'en for debitorlisten og tilføjer den */
    public void createDebitorListe() {
        GuiDebitorliste debitorGui = new GuiDebitorliste();
        this.debitorPanel = debitorGui.getDebitorPanel();
    }

    /** Opretter en instands af GUI'en for kunderne og tilføjer den */
    public void createKunde() {
        GuiKunde kundeGui = new GuiKunde();
        this.kundePanel = kundeGui.getKundePanel();
    }

    /** Opretter en instands af GUI'en for indstillingerne og tilføjer den */
    public void createIndstilling() {
        GuiIndstillinger indstillingGui = new GuiIndstillinger();
        this.indstilPanel = indstillingGui.getIndstillingPanel();
    }
   

}
Avatar billede _carsten Nybegynder
09. december 2003 - 20:56 #12
Hvordan for i vist gui'en ??

ERSTAT:
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Faktura", fakturaPanel);
        tabbedPane.addTab("Debitorliste", debitorPanel);
        tabbedPane.addTab("Kunde", kundePanel);
        tabbedPane.addTab("Indstilling", indstilPanel);
        topPanel.add(tabbedPane, BorderLayout.CENTER);
        topPanel.repaint();
        fakturaPanel.repaint();
        debitorPanel.repaint();
        kundePanel.repaint();
        indstilPanel.repaint();
        indstilPanel.repaint();

MED:
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Faktura", fakturaPanel);
        tabbedPane.addTab("Debitorliste", debitorPanel);
        tabbedPane.addTab("Kunde", kundePanel);
        tabbedPane.addTab("Indstilling", indstilPanel);
        topPanel.add(tabbedPane, BorderLayout.CENTER);
 
        pack();  //VIGTIG
Avatar billede _carsten Nybegynder
09. december 2003 - 22:28 #13
Virker det ?

Med et par ekstra hjemmestrikkede klasser kører det her.
Avatar billede Rasmus Lund Nybegynder
09. december 2003 - 23:13 #14
jeg har lige været online et stykke tid! NEj, det virker desværre stadig ikke! Jeg kan evt. sende dig alle gui-klasserne? hvis du vil prøve at se dem!?
Avatar billede _carsten Nybegynder
10. december 2003 - 08:00 #15
Prøv lige at kigge på vedlagte eksempel, hvor jeg bruger jeres klasse på 3 panes, hvis i ikke kan få det til at virke - skal jeg nok smide en mail adr.

import javax.swing.*;

public class Test extends javax.swing.JFrame {
   
    public Test() {
        initComponents();
    }
   
    private void initComponents() {
        jTabbedPane1 = new javax.swing.JTabbedPane();
        panel1 = new Panel();
        panel2 = new Panel();
        panel3 = new Panel();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        panel1.setBackground(new java.awt.Color(0, 153, 0));
        jTabbedPane1.addTab("tab1", panel1);

        panel2.setBackground(new java.awt.Color(204, 0, 204));
        jTabbedPane1.addTab("tab2", panel2);

        panel3.setBackground(new java.awt.Color(204, 204, 0));
        jTabbedPane1.addTab("tab3", panel3);

        getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);

        pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    public static void main(String args[]) {
        new Test().show();
    }
   
   
    private javax.swing.JTabbedPane jTabbedPane1;
    private Panel panel1;
    private Panel panel2;
    private Panel panel3;   
}



class Panel extends JPanel {

    public Panel() {
        setLayout(null);
 
        labelsidehoved = new JLabel("SIDEHOVED");
        labelsidehoved.setBounds(10, 5, 80, 20);
        add(labelsidehoved);

        labelAdresse2 = new JLabel("Adresse:");
        labelAdresse2.setBounds(10, 55, 80, 20);
        add(labelAdresse2);

        JTextArea areaAdr = new JTextArea("", 5, 20);
        areaAdr.setBounds(90, 55, 250, 100);
        add(areaAdr);

        labelDiv = new JLabel("Diverse:");
        labelDiv.setBounds(10, 180, 80, 20);
        add(labelDiv);

        JTextArea areaDiv = new JTextArea("", 5, 20);
        areaDiv.setBounds(90, 180, 250, 100);
        add(areaDiv);

        JButton buttonGem = new JButton("Gem");
        buttonGem.setBounds(400, 261, 70, 20);
        add(buttonGem);

        labelMoms = new JLabel("MOMS");
        labelMoms.setBounds(10, 300, 80, 20);
        add(labelMoms);

        labelMoms2 = new JLabel("Moms:");
        labelMoms2.setBounds(10, 330, 80, 20);
        add(labelMoms2);

        JTextField moms = new JTextField();
        moms.setBounds(90, 330, 70, 20);
        add(moms);

        labelProc = new JLabel("%");
        labelProc.setBounds(170, 330, 80, 20);
        add(labelProc);

        JButton buttonGem2 = new JButton("Gem");
        buttonGem2.setBounds(400, 330, 70, 20);
        add(buttonGem2);
    }
    JLabel labelsidehoved, labelProc, labelMoms2, labelMoms, labelDiv, labelAdresse2;
}
Avatar billede Rasmus Lund Nybegynder
10. december 2003 - 09:45 #16
godmorgen! Det kan vi stadig ikke få til at virke! når vi sætter pack(); ind bliver vinduet meget småt, og kun selve fanebladene vises.
Avatar billede _carsten Nybegynder
10. december 2003 - 11:23 #17
Okay !

Zip filerne og mail til abcdefg123@mail.dk  den vil virke et par dage.

Jeg får ikke kigget på det før en gang i aften.
Løsningen - hvis jeg finder den, bliver i henhold til Exp's regler postet her.
Avatar billede Rasmus Lund Nybegynder
10. december 2003 - 12:18 #18
Hej Carsten,
Vi prøvede dit første råd endnu engang, og nu virkede det!! underligt nok..! Problem solved!! :)
Tak for hjælpen!
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