JButton Beschriftung

  • Themenstarter Themenstarter temar
  • Beginndatum Beginndatum
T

temar

Gast
Hallo,

Wieso wird die Beschriftung meiner Buttons nicht richtig dargestellt, lediglich durch ... ? Ich vermute mal, dass die Buttons zu klein sind?

Java:
import javax.swing.*;

public class Gui extends JFrame
{
	private JPanel panel;
	private JButton button;
	private int x = 10;
	private int y = 10;
	private int val = 1;
	
	public Gui()
	{
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setBounds(200, 150, 250, 250);
		setResizable(false);
		panel = new JPanel();
		setContentPane(panel);
		panel.setLayout(null);

		for (int i=1; i<=3; i++)
		{
			for (int j=1; j<=3; j++)
			{
				button = new JButton(Integer.toString(val));
				button.setBounds(x, y, 30, 30);
				panel.add(button);
				x += 35;
				val++;
			}
			x = 10;
			y += 35;	
		}
		
		button = new JButton("0");
		button.setBounds(x, y, 65, 30);
		panel.add(button);
	}

}

Danke!
 
Und wenn ich trotzdem mit dem null-Layout arbeiten möchte? Ich finde es am unkompliziertest, da ich mich mit den grafischen Komponenten nicht wirklich auseindersetzen möchte? Ich arbeite ja auch größtenteils mit einem GUI Plugin und copy & paste dann den Code und passe ihn gegebenenfalls an.
Kann man das Problem nicht andersweitig lösen?
 
du kannst den Button hier größer machen z.b. button.setBounds(x, y, 30, 30); dann button.setBounds(x, y, 300, 300); oder sowas .... aber es ist nicht schön !! 😉
 
setLocation() und setSize() sind aber schon zwei Zeilen Code, was ja setBounds() vereint. Oder gibt es hierdurch irgendwelche Nachteile?
 
Wenn du wirklich imo solche hässliche Buttons haben willst, dann kannst du auch den Rand noch ändern, mit
Code:
setMargin(new Insets(0, 0, 0, 0));
, somit wird der Text auf den kompletten Button dargestellt.
 
Was meinst du mit "hässlich" ?

Noch eine weitere Frage:

Wie greife ich aus dieser Klasse auf mein JTextField zu?

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

public class MyActionListener implements ActionListener
{
	private JButton button;
	
	public MyActionListener(JButton button)
	{
		this.button = button;
	}

	@Override
	public void actionPerformed(ActionEvent event)
	{
		System.out.println(button.getActionCommand());
		
		if (event.getActionCommand() == "1")
		{
//			textField.setText("1");
		}
		
	}
}

... entsprechend:

Java:
button.addActionListener((new MyActionListener(button)));

Danke!
 
Ganz einfach. Stichwort Parameterübergabe. Und zwar in diesem Fall am besten per Konstrukor:
Java:
import java.awt.event.*;
import javax.swing.*;
 
public class MyActionListener implements ActionListener
{
    private JButton button;
    private JTextFiled textFied;
    
    public MyActionListener(JButton button, JTextField textField)
    {
        this.button = button;
        this.textField = textField;
    }
 
    @Override
    public void actionPerformed(ActionEvent event)
    {
        System.out.println(button.getActionCommand());
        
        if (event.getActionCommand() == "1")
        {
            textField.setText("1");
        }
        
    }
}

Also genau das selbe was du auch schon mit deinem JButton gemacht hast.

Hat da jemand einfach Copy & Paste betrieben?!?
 

Zurück
Oben