setUndecorated(true)

Status
Nicht offen für weitere Antworten.
W

Wuffel

Gast
Wenn ich setUndecorated(true) bei einem JFrame anwende, verschwindet AUCH die äußere schwarze Rahmenlinie.

Das Fenster sieht irgendwie "nackt" aus. Gibts ne Möglichkeit diesen Rahmen doch wieder dranzukriegen ?
 

Wildcard

Top Contributor
Darum musst du dich selbst kümmern (Zeichnen), ebenso um das Verschieben, Vergrößern, ...
 

L-ectron-X

Gesperrter Benutzer
Hier mal ein Beispiel:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class OwnTitleFrameDemo extends JDialog {
   private JLabel messageLabel;
   private JButton button;
   private JPanel buttonPanel;
   private int xPos, yPos;

   public OwnTitleFrameDemo(Frame parent, String title, String message) {
      super(parent, true);
      setUndecorated(true);

      JPanel contentPanel = new JPanel(new BorderLayout());
      contentPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

      messageLabel = new JLabel(message, SwingConstants.CENTER);
      messageLabel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
      contentPanel.add(messageLabel, BorderLayout.CENTER);
      
      JPanel titlePanel = new JPanel(new BorderLayout());
      titlePanel.setBorder(BorderFactory.createEmptyBorder(0,3,0,0));
      titlePanel.setBackground(UIManager.getDefaults().getColor("InternalFrame.activeTitleBackground"));

      JLabel titleBar = new JLabel("<html>[b]"+title+"[/b]</html>");
      titleBar.setForeground(UIManager.getDefaults().getColor("InternalFrame.activeTitleForeground"));
      
      titleBar.addMouseMotionListener(new MouseMotionAdapter() {
         public void mouseDragged(MouseEvent e) {
            Point window = OwnTitleFrameDemo.this.getLocation();
            OwnTitleFrameDemo.this.setLocation(window.x+e.getX()-xPos, window.y+e.getY()-yPos);
         }
      });

      titleBar.addMouseListener(new MouseAdapter() {
         public void mousePressed(MouseEvent e) {
            xPos = e.getX();
            yPos = e.getY();
         }
      });
      
      titlePanel.add(titleBar, BorderLayout.CENTER);
      
      CloseButton closeButton = new CloseButton();
      titlePanel.add(closeButton, BorderLayout.EAST);

      button = new JButton("OK");
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            closeDialog();
         }
      });

      buttonPanel = new JPanel();
      buttonPanel.setBorder(new EmptyBorder(new Insets(0, 0, 10, 0)));
      buttonPanel.add(button);

      contentPanel.add(titlePanel, BorderLayout.NORTH);
      contentPanel.add(buttonPanel, BorderLayout.SOUTH);
      add(contentPanel);

      pack();
      setLocationRelativeTo(parent);
      setVisible(true);
   }
   
   private void closeDialog() {
      setVisible(false);
      dispose();
   }
   
   public void setMessage(String message) {
      messageLabel.setText(message);
   }
   
   class CloseButton extends JButton {
      CloseButton() {
         super();
         setPreferredSize(new Dimension(15, 15));
         setMargin(new Insets(0, 0, 0, 0));
         setFocusPainted(false);
         setContentAreaFilled(false);
         
         addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               closeDialog();
            }
         });
      }
      
      public void paintComponent(Graphics g) {
         super.paintComponent(g);
         g.setColor(Color.RED.darker());
         g.fillRect(2, 2, getSize().width-4, getSize().height-4);
         g.setColor(Color.WHITE);
         g.drawRect(2, 2, getSize().width-4, getSize().height-4);
         g.drawLine(5, 5, getSize().width-5, getSize().height-5);
         g.drawLine(getSize().width-5, 5, 5, getSize().height-5);
      }
   }

   public static void main(String[] args) {
      try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {
         e.printStackTrace();
      }

      new OwnTitleFrameDemo(null, "OwnTitleFrameDemo", "Du siehst dir gerade eine Demonstration eines JDialogs mit eigener Titelleiste an.");
   }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
Developer_X Swing JFrame.setUndecorated(true); AWT, Swing, JavaFX & SWT 5
Z setUndecorated(true) <-> win 2000 <-> win xp AWT, Swing, JavaFX & SWT 13
J setUndecorated auf bereits sichtbares JFrame AWT, Swing, JavaFX & SWT 5
thE_29 KDE -- setUndecorated AWT, Swing, JavaFX & SWT 9
I setUndecorated geht nicht. AWT, Swing, JavaFX & SWT 3
R setUndecorated und defaultLAF deco zur laufzeit AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
K Swing AWT-EventQueue-1 java.lang.NoClassDefFoundError bei setVisible(true) AWT, Swing, JavaFX & SWT 3
L LookAndFeel JInternalFrame aussehen isSelected() true vs false AWT, Swing, JavaFX & SWT 0
D Swing JButton.setenabled(true) funktioniert nicht AWT, Swing, JavaFX & SWT 12
B GlassPane setVisible(true) funktioniert nicht AWT, Swing, JavaFX & SWT 2
O Probleme bei setModal(true) AWT, Swing, JavaFX & SWT 8
J Swing setLineWrap(true) AWT, Swing, JavaFX & SWT 12
T Swing JTable - true zurückbekommen, wenn der Cursor in einer Zelle blinkt AWT, Swing, JavaFX & SWT 7
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
D JCombox editable true AWT, Swing, JavaFX & SWT 5
T FocusTraversalPolicy und setEditable(true) AWT, Swing, JavaFX & SWT 3
C JWindow.setVisible(true) dauert ewig AWT, Swing, JavaFX & SWT 7
L Checkbox in JTable (again), bei true Daten in Header AWT, Swing, JavaFX & SWT 7
F JComboBox setEditable( true ) auf Tastatur Events reagieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben