Проблема с рендерингом Swing - иногда кнопки не отображаются [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проблема с рендерингом Swing - иногда кнопки не отображаются [закрыто]

Сообщение Anonymous »

После нескольких запусков одной и той же программы часть кнопок исчезает до тех пор, пока пользователь не нажмет на одну из отображаемых кнопок. Количество оставшихся кнопок выглядит случайным. Также иногда программа их путает.
Проблема в том, что иногда после запуска у меня появляются случайные кнопки в случайном порядке, при том, что иногда после запуска все работает как надо. Странно то, что после запуска одного и того же кода я получаю разные результаты.
Должно было выглядеть так:
Изображение

Но иногда выглядит так:
Изображение

public class Window {

final String name = "calculator";
final int[] size = {360, 650};

//vars..

//colors..

final String[] buttonValues = {"%" , "CE", "C", "BS",
"1/x", "xp2", "SR", "/",
"7", "8", "9", "x",
"4", "5", "6", "-",
"1", "2", "3", "+",
"+/-", "0", ",", "EQ"};

final String[] grayButtonValues = {"%" , "CE", "C", "BS",
"1/x", "xp2", "SR", "/",
"x", "-", "+"};

final String[] blueButtonValues = {"EQ"};

final String[] operatorValues = {"+", "-", "x", "/"};

//Frames, labels, panels
JFrame calculator = new JFrame(name);
JLabel displayLabel = new JLabel();
JPanel displayPanel = new JPanel();

JLabel displayLabelOperation = new JLabel();
JPanel displayPanelOperation = new JPanel();

JLabel buttonLabel = new JLabel();
JPanel buttonPanel = new JPanel();

//Fonts..

Window() {

calculator.setVisible(true);
calculator.setSize(size[0], size[1]);
calculator.setLocationRelativeTo(null);
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calculator.setLayout(new BorderLayout());
calculator.setResizable(false);

displayLabel.setBackground(color0);
displayLabel.setForeground(color1);
displayLabel.setFont(new Font("Arial", Font.PLAIN, 80));
displayLabel.setHorizontalAlignment(JLabel.RIGHT);
displayLabel.setText("0");
displayLabel.setOpaque(true);

displayPanel.setLayout(new BorderLayout());
displayLabel.add(displayPanel);
calculator.add(displayLabel, BorderLayout.NORTH);

buttonLabel.setBounds(0, 0, 10, 10);
buttonPanel.setBounds(0, 0, 10, 10);

buttonPanel.setLayout(new GridLayout(6 , 4));
buttonPanel.setBackground(White);
calculator.add(buttonPanel);

for (int i = 0; i < buttonValues.length; i++) {
JButton buttonI = new JButton();
String buttonValue = buttonValues;
buttonI.setFont(new Font("Arial", Font.PLAIN, 30));
buttonI.setText(buttonValues);
buttonI.setFocusable(false);
buttonI.setBorder(new LineBorder(White, 1));

//applying colors..

buttonPanel.add(buttonI);

buttonI.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

JButton buttonP = (JButton) e.getSource();
String buttonValue = buttonP.getText();

// switch (buttonValue) { // case "0","1","2","3","4","5","6","7","8","9" -> addNum(); // case "+","-","x","/" -> addOperator(); // case "C" -> C(); // case "EQ" -> equals(); // default -> Error(); // }

}


Подробнее здесь: https://stackoverflow.com/questions/798 ... nt-show-up
Ответить

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

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

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

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

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