JButton: значок выравнивается по левому краю, текст — по правому краю.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JButton: значок выравнивается по левому краю, текст — по правому краю.

Сообщение Anonymous »

Я пытаюсь создать JButton со значком и текстом. Моя проблема в том, что я хочу, чтобы значок был выровнен по левому краю, а текст — по правому краю (выравнивание по правому краю не обязательно, но я не хочу, чтобы текст прилипал к значку).
Не имея возможности сделать это самостоятельно, я попробовал немного другое решение. Я использовал iconTextGap, чтобы создать некоторое пространство между значком и текстом, что в принципе работало нормально, но когда я создаю несколько кнопок, каждая из которых имеет самую широкую ширину, значок не находится в самом левом углу. больше (кроме кнопки с самым длинным текстом).
Я включил код, чтобы продемонстрировать это:

Код: Выделить всё

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.File;
import java.net.MalformedURLException;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class Main{

private JFrame frame;
private JPanel buttonPanel;
private GridBagConstraints constraints;

public Main() throws MalformedURLException{

frame = new JFrame();

buttonPanel = new JPanel();
frame.add(buttonPanel);

buttonPanel.setLayout(new GridBagLayout());
constraints = new GridBagConstraints();

constraints.insets = new Insets(5, 5, 3, 5);
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridx = 0;
constraints.gridy = 0;

String[] text = { "some Text", "this text is longer" };

for (int i = 0; i < text.length; i++) {
JButton button= new JButton(text[i], new ImageIcon(new File("icon.png").toURI().toURL()));
button.setAlignmentX(SwingConstants.WEST);
button.setIconTextGap(30);
button.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 10));

buttonPanel.add(button, constraints);
constraints.gridy++;
}

frame.pack();
frame.setVisible(true);

}

public static void main(String[] args){
try {
new Main();
} catch (Exception e) {
e.printStackTrace();
}
}

}
Кто-нибудь знает, как разместить значок слева и оставить некоторое пространство между значком и текстом (или выровнять текст по правому краю)?

Подробнее здесь: https://stackoverflow.com/questions/130 ... ht-aligned
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • CSS выравнивает текст по правому краю, но выравнивает по левому краю при переносе строки
    Anonymous » » в форуме CSS
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Текст многострочного баннера не выравнивается по левому краю одинаково
    Anonymous » » в форуме CSS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Текст переполнения выравнивается по левому краю
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как сделать 2 div под параметром mat для выравнивания по левому и правому краю в mat-autocomplete Angular 16
    Anonymous » » в форуме CSS
    0 Ответы
    146 Просмотры
    Последнее сообщение Anonymous
  • Bootstrap NavBar с элементами, выровненными по левому, центру или правому краю
    Гость » » в форуме CSS
    0 Ответы
    135 Просмотры
    Последнее сообщение Гость

Вернуться в «JAVA»