Avatar billede dennism Nybegynder
22. november 2006 - 09:31 Der er 10 kommentarer og
1 løsning

Java: problem med Pack()

Jeg har denne test klasse:

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

public class ErrorFrame {
   
    private JLabel textLabel = new JLabel("Der skete en fejl!");
    private JFrame frame = new JFrame("Fejl");
    private Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
   
    public ErrorFrame() {

        frame.setResizable(false);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
       
        JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
       
        JButton button = new JButton("Prøv igen");

        bottomPanel.add(button);
        centerPanel.add(textLabel);
       
        frame.add(centerPanel, BorderLayout.CENTER);
        frame.add(bottomPanel, BorderLayout.SOUTH);
       
        frame.setVisible(true);
       
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ev) {
                frame.setVisible(false);
            }
        });
       
        frame.pack();
        frame.setLocation((dimension.width-frame.getWidth())/2, (dimension.height-frame.getHeight())/2);

    }
   
    public void setMessage(String message) {
      textLabel.setText(message);
      frame.pack();
      frame.setLocation((dimension.width-frame.getWidth())/2, (dimension.height-frame.getHeight())/2);
    }
   
    public void setTitle(String title) {
        frame.setTitle(title);
    }
   
    public void setSize(int width, int height) {
        frame.pack();
    }
   
    public static void main(String[] args) {
        ErrorFrame frame = new ErrorFrame();
        frame.setMessage("Her er en meget, meget, meget lang tekst.");
    }
   
}

Hvor I kompilerer denne, og kører den, håber jeg, at I lige som mig vil opleve at nogle gange kan man se alt teksten i vinduet, nogle gange kan man se noget af det og andre gange er vinduet helt lille.
Prøv at kør programmet 10 gange i træk.

Jeg er bange for, at det er setLocation der er problemet. Men håber der er nogen der kan hjælpe mig?
Avatar billede schwarz84 Nybegynder
22. november 2006 - 10:32 #1
Prøv at køre pack som det næstsidste og setVisible(true) som det allersidste i constructoren...
Avatar billede dennism Nybegynder
22. november 2006 - 11:09 #2
Jeg er jo nødt til at pack() inden jeg laver setLocation. Ellers bliver locationen jo bestemt udfra den gamle vindue-størrelse - det skal den jo ikke.

kan du følge mig?
Avatar billede winners79 Nybegynder
22. november 2006 - 16:41 #3
Den virker perfect for mig, kan ikke genskabe det problem du nævner, bruger Eclipse 3.2.1
Avatar billede winners79 Nybegynder
22. november 2006 - 16:53 #4
Men hvis du bare skal vise en fejl kan du jo bare bruge en af Javas egne indbyggede Message boxes:
JOptionPane.showMessageDialog(null, "Der skete en fejl!!!!!!!!", "fejl", JOptionPane.ERROR_MESSAGE);


men ellers generelt brug frame.dispose(); istedet for setVisible(false); så bliver den jo lukket istedet for bare usynlig.
Avatar billede dennism Nybegynder
22. november 2006 - 17:06 #5
Så er problemet måske, at jeg kører Linux - måske er det et lokalt problem.

Du har ret, skulle måske overveje at bruge JOPtionPane istedet ;)
Avatar billede dennism Nybegynder
22. november 2006 - 17:24 #6
Jeg laver min Dialog sådan:
JOptionPane.showMessageDialog(null, text, title, JOptionPane.ERROR_MESSAGE);

Hvordan kan jeg smide et ikon med, som skal være i titel-baren?
Avatar billede winners79 Nybegynder
22. november 2006 - 18:10 #7
tænker du på oppe i den blå linie?

hvis du mener ved siden af teksten, så sådan:
JOptionPane.showMessageDialog(null, "Der skete en fejl!!!!!!!!", "fejl", JOptionPane.ERROR_MESSAGE,new ImageIcon("blue-man02.png"));
Avatar billede dennism Nybegynder
22. november 2006 - 18:19 #8
heh..det var godt nok oppe i den blå linie ;)
Avatar billede dennism Nybegynder
26. november 2006 - 18:20 #9
Smider du lige et svar, Carsten?
Avatar billede winners79 Nybegynder
26. november 2006 - 19:06 #10
:)
Avatar billede winners79 Nybegynder
26. november 2006 - 19:06 #11
oops
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