setComponentOrientation / applyComponentOrientation

Status
Nicht offen für weitere Antworten.

roddy

Aktives Mitglied
Hallo zusammen,

ich möchte ein Checkbox so haben, dass links der Text steht und rechts die Box zu sehen ist. Ich dachte das macht man mit einem der beiden Befehle:

Code:
          final Checkbox sa0 = new Checkbox("Meine Checkbox",false);
          sa0.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

oder

Code:
          final Checkbox sa0 = new Checkbox("Meine Checkbox",false);
          sa0.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

Leider ändert keines der beiden das Aussehen meiner Checkboxes, es ist immernoch die Box links und der Text rechts. Hat jemand eine Idee, was ich falsch machen könnte? Ausserdem hab ich nicht so ganz verstanden, was der Unterschied zwischen den beiden ist, kann mir da evtl. noch jemand helfen?
 

L-ectron-X

Gesperrter Benutzer
Du benutzt vermutlich gänzlich verkehrte Methoden. Ich nehme an du möchtest etwa dies erreichen:

Kopiere mal die Sourcen, kompiliere sie und lass mal das Programm laufen:
Code:
import javax.swing.*;
import java.awt.event.*;

public class JCheckBoxTextAlignment extends JFrame {
   private JCheckBox check;
   
   public JCheckBoxTextAlignment(String title) {
      super(title);
      setSize(400, 200);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      
      check = new JCheckBox("Klicken für Text links neben der JCheckBox", false);
      check.setHorizontalAlignment(SwingConstants.CENTER); //mittig im JFrame
      check.setFocusPainted(false); //keinen Focus-Rahmen zeichnen
      check.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            jCheckBoxChecked();
         }
      });
      getContentPane().add(check); //ab Java 1.5 nur noch add(...)
   }
   
   private void jCheckBoxChecked() {
      if(check.isSelected()) {
         check.setHorizontalTextPosition(SwingConstants.LEFT);
         check.setText("Klicken für Text rechts neben der JCheckBox");
      }
      else {
         check.setHorizontalTextPosition(SwingConstants.RIGHT);
         check.setText("Klicken für Text links neben der JCheckBox");
      }
   }
   
   public static void main(String[] args) {
      new JCheckBoxTextAlignment("Textausrichtung von JCheckBox").setVisible(true);
   }
}
 

roddy

Aktives Mitglied
Erstmal danke für deine ausführliche Antwort!

Was ich suche ist allerdings nur eine Möglichkeit fest dafür zu sorgen, dass der Text links von der Checkbox steht und nicht rechts. Dein Text enhält eine Lösung meines Problems: Wenn ich eine JCheckBox nehme kann ich mit SetHorizontalTextAlignment genau das tun, was ich mit applyComponentOrientation bzw. setComponentOrientation versucht habe. Allerdings gefällt mir rein optisch die 'normale' Checkbox besser und ich versteh nicht, warum setComponentOrientation/applyComponentOrientation nicht genau das tut, was ich gerne möchte (wie ich die API verstehe, müsste es das eigentlich. Wann erfindet eigentlich endlich mal jemand die Methode doWhatIThinkOf() ? :lol: )
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben