При использовании setRollover (true) кнопки на панелях инструментов Swing являются плоскими без рамки, и граница отображается только при наведении / нажатии кнопки.Однако если кнопки сначала добавляются на панель, а затем панель добавляется на панель инструментов, это не работает.Есть ли какой-нибудь простой способ, как этого добиться?
Я хочу, чтобы кнопки были в JPanel, чтобы они действовали как один компонент (представьте себе пейджинговый компонент с кнопками первой / предыдущей / следующей / последней страницы).Я также хочу, чтобы он работал независимо от L & F (как если бы JPanel не находился между панелью инструментов и кнопками).
РЕДАКТИРОВАТЬ:
Сравнить кнопки One& Два (добавлено напрямую) с кнопками Три и Четыре (добавлено через JPanel) в следующем примере:
import javax.swing.*;
public class ToolbarTest extends JFrame {
ToolbarTest() {
JToolBar toolbar = new JToolBar();
toolbar.setRollover(true);
JButton button = new JButton("One");
button.setFocusable(false);
toolbar.add(button);
button = new JButton("Two");
button.setFocusable(false);
toolbar.add(button);
JPanel panel = new JPanel();
button = new JButton("Three");
button.setFocusable(false);
panel.add(button);
button = new JButton("Four");
button.setFocusable(false);
panel.add(button);
toolbar.add(panel);
add(toolbar);
pack();
}
public static void main(String[] args) throws Throwable {
// optional: set look and feel (some lf might ignore the rollover property)
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) { // or "Windows", "Motif"
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
ToolbarTest frame = new ToolbarTest();
frame.setVisible(true);
}
}
Вот снимки экрана:
Панель инструментов на Nimbus LF:
Та же панель инструментов, когда мышь наводит курсор на вторую кнопку (курсор мыши не отображается):
Та же панель инструментовв Windows LF:
Мне бы хотелось, чтобы кнопки «Три» и «Четыре» работали так же, как кнопки «Одна» и «Две».