Abstand des Textes vom Rahmen

nuely

Grünschnabel
Ich hab zur Erläuterung unten stehenden Code geschrieben. Ich möchte dabei einen Rahmen um die JLabel haben. Das funktioniert auch. Aber der Abstand des Textes im Label ist mir zu nah am Rand. Mit den ipad-Werten wollte ich den Vergrößern. Nach oben und unten hin funktioniert das auch gut, aber nicht nach rechts und links. Weiß jemand woran das liegt?

Code:
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.BorderFactory;
import javax.swing.JLabel;

public class Rahmenbeispiel {

	public static void main(String[] args)
	{
        Frame frame = new Frame("Beispiel");
        frame.setBounds (100, 100, 200, 100);

        frame.setLayout (new GridBagLayout());
        JLabel label1=new JLabel("Label 1");
        label1.setBorder(BorderFactory.createLineBorder(Color.black));
        frame.add(label1, new GridBagConstraints(0,0,1,1,0.4,0.5,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
        JLabel label2=new JLabel("Label 2");
        label2.setBorder(BorderFactory.createLineBorder(Color.black));
        frame.add(label2, new GridBagConstraints(1,0,1,1,0.6,0.5,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),10,10));
        frame.addWindowListener
            (new WindowAdapter()
                {
                    public void windowClosing (WindowEvent e)
                    {
                        System.exit (0);
                    }
                }
            );
        frame.setVisible(true);

	}

}
 

Anhänge

  • beispiel.jpg
    beispiel.jpg
    4,6 KB · Aufrufe: 1.364
Mische bitte nicht so AWT und Swing. Du verwendest JLabels also bitte auch einen JFrame und dann mit einer CloseOperation statt einem Listener.

Für den Rand verwendest du am Besten eine CompoundBorder:
Java:
package de.tutorials;

import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class Rahmenbeispiel {

	public static void main(String[] args) {
		JFrame frame = new JFrame("Beispiel");
		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		frame.setBounds(100, 100, 200, 100);

		frame.setLayout(new FlowLayout());
		JLabel label1 = new JLabel("Label 1");
		final LineBorder lineBorder2 = (LineBorder) BorderFactory
				.createLineBorder(Color.black);
		label1.setBorder(lineBorder2);
		frame.add(label1);

		JLabel label2 = new JLabel("Label 2");
		Border border = BorderFactory.createLineBorder(Color.black);
		Border margin = new EmptyBorder(10, 10, 10, 10);
		label2.setBorder(new CompoundBorder(border, margin));
		frame.add(label2);

		frame.pack();

		frame.setVisible(true);

	}

}
 
Mische bitte nicht so AWT und Swing. Du verwendest JLabels also bitte auch einen JFrame und dann mit einer CloseOperation statt einem Listener.

ich hatte das fix zusammenkopiert um mit möglichst wenig Code mein Problem zu beschreiben. Die richtige Anwendung besteht nur aus Swing.


Durch die Verwendung von zwei Rahmen funktioniert das. Ich danke dir für deine Hilfe.
 
Zurück