Könntet ihr mir bei Java Swing weiterhelfen?

3 Antworten

a) Komponenten müssen dem Frame / ContentPanel zugewiesen werden. Sie nur zu erzeugen, bringt nicht viel.

JLabel label = new JLabel("some label");
myFrame.getContentPane().add(label);

b) Setze ein anderes Layout, das BorderLayout wirst du kaum nutzen wollen. Um eigene Größen zu definieren, wäre bspw. das FlowLayout geeignet. Die Größen werden so gesetzt:

button.setPreferredSize(someWidth, someHeight);

c) Für jede einzelne Komponente setVisible aufzurufen, ist nicht notwendig. Ruf die Methode nur einmal für den Frame auf, nachdem ihm alle Komponenten zugefügt wurden.

Falls möglich dass wenn man das JFrame schließen will noch ein JFrame kommt (...)

Setze hierfür einen WindowListener ein. Kapsel deinen Code für das View zudem im Dispatch Event Thread.

5

Ok, danke !

0

Du musst den Button und das Label auch per .add zum JFrame hinzufügen.

myFrame.add(myText);

Mit einem LayoutManager deiner Wahl kannst Du dann auch das aussehen bestimmen: https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Und wg. dem JFrame öffnen beim Schließen von einem anderen: https://stackoverflow.com/questions/4716372/java-how-do-i-close-a-jframe-while-opening-another-one

Woher ich das weiß:
eigene Erfahrung
5

Danke :D

0

Nein.

Wie kann man in Java(Applet/gui) ein Textfeld bewegen?

Ich bin gerade am Programmieren (bin noch ziemlich neu in Java) und möchte in folgendem Programm die Textfelder/Passwortfelder verschieben, um eine struktur zu erstellen(nach oben, unten, links. rechts...). Wie kann ich das machen? Das Programm:

import javax.swing.*; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField;

public class Parkscheinautomat extends JFrame {
    
    JTextField EingabeFeld = new JTextField(20);
    JTextField AusgabeFeld = new JTextField(20);
    
    public Parkscheinautomat() {
        super("Parkscheinautomat");
        setSize(1365,770);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        
        JPanel angabe = new JPanel(); 
        JLabel Eingabe = new JLabel("Eingabe Betrag: ");
        JLabel Ausgabe = new JLabel("Ihre Parkzeit beträgt : ");
        
        angabe.add(Eingabe);
        angabe.add(EingabeFeld);
        angabe.add(Ausgabe);    
        angabe.add(AusgabeFeld);        
        setContentPane(angabe);
    }



public static void main(String[] arguments) {
    Parkscheinautomat PA = new Parkscheinautomat();
    }

}

Ich brauche dringend hilfe! Danke im Voraus!

...zur Frage

Weiter Button?

Wie kriege ichs hin das der Button bei Login also der Weiter Button einen zu einem Fenster Leitet ?

Code ist hier:

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

public class Übung2 extends JFrame implements ActionListener

{

 JButton Weiter;

 JButton Login;

 JButton Register;

 JPanel Hi;

 

 public Übung2()

 {

  this.setSize(500, 600);

  

  Weiter = new JButton("Weiter");

  Login = new JButton("Login");

  Register = new JButton("Register");

  

  Weiter.addActionListener(this);

  Login.addActionListener(this);

  Register.addActionListener(this);

  

  Hi = new JPanel();

  

  JLabel label = new JLabel(new ImageIcon("C:\\Users\\Besitzer\\Desktop\\Software\\Welcome\\Welcome.jpg"));

  

  Hi.add(Weiter);

  Hi.add(Login);

  Hi.add(Register);

  Hi.add(label);

  

  this.add(Hi);

 }

 

 public static void main(String[] args)

 {

  Übung2 b1 = new Übung2();

  b1.setVisible(true);

 }

 

 public void actionPerformed(ActionEvent ae)

 {

  if(ae.getSource() == this.Weiter)

  {

   JFrame jf = new JFrame();

   jf.setVisible(true);

   jf.setSize(500, 500);

  }

  

  if(ae.getSource() == this.Login)

  {

   JFrame jf = new JFrame();

   jf.setVisible(true);

   jf.setSize(100, 200);

   

   JPanel panel = new JPanel();

   JLabel label = new JLabel("Name:");

   JLabel label1 = new JLabel("Password:");

   

   JTextField Name = new JTextField(10);

   JPasswordField Password = new JPasswordField(10);

   

   JButton button = new JButton("Weiter");

   

   jf.add(panel);

   panel.add(label);

   panel.add(Name);

   panel.add(label1);

   panel.add(Password);

   panel.add(button);

  }

  

  if(ae.getSource() == this.Register)

  {

   JFrame jf = new JFrame();

   jf.setVisible(true);

   jf.setSize(1100, 100);

   

   JPanel panel = new JPanel();

   

   JLabel Name = new JLabel("Name:");

   JLabel Vorname = new JLabel("Vorname:");

   JLabel Password = new JLabel("Password:");

   JLabel Password2 = new JLabel("Password noch einmal eingeben:");

   JLabel EMail = new JLabel("E-Mail:");

   

   JTextField Name1 = new JTextField(10);

   JTextField Vorname1 = new JTextField(10);

   JPasswordField Password1 = new JPasswordField(10);

   JPasswordField PasswordBästetigen = new JPasswordField(10);

   JTextField EMail1 = new JTextField(10);

   

   JButton Weiter = new JButton("Weiter");

   

   jf.add(panel);

   panel.add(Name);

   panel.add(Name1);

   panel.add(Vorname);

   panel.add(Vorname1);

   panel.add(Password);

   panel.add(Password1);

   panel.add(Password2);

   panel.add(PasswordBästetigen);

   panel.add(EMail);

   panel.add(EMail1);

   panel.add(Weiter);

  }

 }

}

...zur Frage

Java-Problem: JPanel über JPanel anzeigen lassen?

Hallo,

Ich möchte ein Programm schreiben, bei dem ich ein JPanel mit JButtons über einem JPanel mit einer Grafik anzeigen lasse. Das JPanel mit der Grafik soll also den Hintergrund darstellen. Bei folgendem Code ergibt sich aber das Problem, dass nur der JButton zu sehen ist.

Meine Frage lautet also nun, wie man zwei JPanels übereinander anzeigen lassen kann.

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

public class Test extends JPanel{

public Test(){
    JFrame frame = new JFrame();
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    JPanel panel = new JPanel();
    panel.add(new JButton("Klick"));

    frame.add(this);
    frame.add(panel);
}

public void paint(Graphics g){
    g.setColor(Color.red);
    g.fillRect(0, 0, 500, 500);
}

public static void main(String [] args){
    new Test();
}

}

Danke schon mal für alle Lösungsvorschläge :)

...zur Frage

Java GUI wird nicht angezeigt?

Hey,

ich bin gerade dabei ein Java GUI Programm zu entwerfen. Allerdings sehe ich keine Buttons oder sonstige Anwendungen auf der Oberfläche.

(Sorry wenn ich mich nicht fachmännisch ausdrücke, bin noch Anfänger)

Hier ein Ausschnit

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

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 01.11.2016
  * @author 
  */

public class GUI extends JFrame {
  // Anfang Attribute
  private Canvas canvas1 = new Canvas();
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  private JButton jButton4 = new JButton();
  private JButton jButton5 = new JButton();
  private JButton jButton6 = new JButton();
  private JLabel jLabel3 = new JLabel();
  private JButton jButton7 = new JButton();
  private JButton jButton8 = new JButton();
  private JButton jButton9 = new JButton();
  private JTextField jTextField1 = new JTextField();
  private JButton jButton10 = new JButton();
  private JButton jButton11 = new JButton();
  private JLabel jLabel4 = new JLabel();
  private JButton jButton14 = new JButton();
  private JButton jButton12 = new JButton();
  private JButton jButton13 = new JButton();
  private JLabel jLabel5 = new JLabel();
  private JButton jButton15 = new JButton();
  private JButton jButton16 = new JButton();
  private JLabel jLabel6 = new JLabel();
  private JButton jButton17 = new JButton();
  private JButton jButton18 = new JButton();
  private JButton jButton19 = new JButton();
  // Ende Attribute
  
  public GUI() { 
    // Frame-Initialisierung
    super();
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 415; 
    int frameHeight = 865;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setTitle("Formular");
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    canvas1.setBounds(0, -8, 396, 828);
    cp.add(canvas1);
    jLabel1.setBounds(88, 24, 220, 28);
    jLabel1.setText("Dieser Text soll verändert werden");
    cp.add(jLabel1);
    jLabel2.setBounds(24, 72, 207, 20);
    jLabel2.setText("Aufgabe 1: Hintergrundfarbe ändern");
    cp.add(jLabel2);
    jButton1.setBounds(24, 104, 107, 25);
    jButton1.setText("Rot");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });

Danke im Voraus für alle Antworten

...zur Frage

Fehle in Quellcode?

Ich habe folgendes Programm: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*;

public class Parkscheinautomat3 extends JFrame implements ActionListener {
            
    JButton b1 = new JButton(" Bestätigen");     
    JButton b2 = new JButton(" Löschen");       
    JFrame frame = new JFrame();
    JTextField angabe = new JTextField ();
    JPanel panel = new JPanel();
    JTextArea textfeld = new JTextArea(11,20);
    JTextField ausgabe = new JTextField(15);
    JLabel l1 = new JLabel("Eingabe Betrag: ");
    JLabel l2 = new JLabel("Ihre Parkzeit : ");
    
public Parkscheinautomat3() {
        super("Parkscheinautomat");
            
        textfeld.setText("Zahlungsmöglichkeiten:\n" + 
                         "Es ist ausschließlich Bar zu zahlen!\n" +  
                         "-----------------------\n" +
                         "Parkgebühren:\n" + 
                         "30 Minuten = € 0,80\n" + 
                         "1 Stunde = € 1,60\n" + 
                         "2 Stunden = € 3,20\n" +
                         "-----------------------\n" +
                         "Höchstparkdauer:\n" + 
                         "2 Stunden\n"  );
        
        JScrollPane scrollpane = new JScrollPane(textfeld);
        
    textfeld.setEditable(false);
    ausgabe.setEditable(false);
    
    b1.addActionListener(this);
    b2.addActionListener(this);

    panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
    panel.add(scrollpane);
    panel.add(l1);
    panel.add(angabe);
    panel.add(b1);
    panel.add(b2);
    panel.add(l2);
    panel.add(ausgabe);
    add(panel);
    pack(); 
}

public static void main(String[] arguments) {
    
    Parkscheinautomat3 PA = new Parkscheinautomat3();
    
    PA.setSize(500,500); 
    PA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    PA.setResizable(false);
    PA.setLocationRelativeTo(null);
    PA.setVisible(true);
}

public void actionPerformed(ActionEvent evt){

    Object source = evt.getSource();
    if (source == b1);
        ausgabe.setText("Sie dürfen 30 Minuten Parken!");   
    
     if (source == b2)
    angabe.setText(""); 
    repaint();
}           

} Wenn ich es ausführe, wird mir folgender Fehler angezeigt: Exception in thread "main" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at sun.misc.FloatingDecimal.parseDouble(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at Parkscheinautomat3.(Parkscheinautomat3.java:21) at Parkscheinautomat3.main(Parkscheinautomat3.java:59) Bitte um hilfe!

...zur Frage

Was möchtest Du wissen?