Я пытался надеть Jlabel на кнопку J
Все, что я вижу, это:
contentPane.add(btnTotalCall);
...
contentPane.add(lblTotalCall);
Это означает, что вы добавляете два компонента на панель, а не добавляете ярлык для кнопки.
но когда я наведу указатель мыши на jlabel, исчезнет
По умолчанию Swing предполагает, что компоненты не перекрываются, и когда вы наводите курсор мыши на кнопку, кнопка должна быть перекрашена, чтобы закрасить мышь эффектом кнопки, поэтому вся кнопка перерисовывается и вы больше не видите метку.
Если вы хотите нарисовать два компонента в одном и том же месте, вам нужно переопределить метод isOptimizedDrawingEnabled()
панели, чтобы вернуть false
, чтобы убедиться, что оба компонента перекрашены.
См. Схема наложения для диспетчера компоновки, который позволит вам размещать несколько компонентов друг над другом, как только вы переопределите вышеуказанный метод.
Или более простой подход - добавить метку к кнопке:
JButton button = new JButton("Total Calls");
button.setVerticalAlignment(SwingConstants.TOP);
button.setLayout( new BorderLayout() );
JLabel center = new JLabel("0");
center.setHorizontalAlignment(SwingConstants.CENTER);
button.add(center, BorderLayout.CENTER);
Это не настоящий менеджер раскладки, так как размер кнопки будет определяться только свойствами кнопки, а не надписью, добавленной к кнопке.
Другой вариант - использовать HTML для текста кнопки:
JButton button2 = new JButton("<html>Total Calls<br><br><center>0</center></html>");