這不是一個答案,但延長的測試用例來測試的Mac OS外觀和雨雲,當其在Windows操作系統上運行的區別,工作
它的出現,這成了一個答案......
試試這個下手......
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;
public class ChangeButton {
public static void main(String[] args) {
new ChangeButton();
}
public ChangeButton() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel implements ActionListener {
private final JButton[][] firstBoard;
public TestPane() {
setLayout(new GridLayout(9, 9));
firstBoard = new JButton[9][9];
for (int x = 0; x < firstBoard.length; x++) {
for (int y = 0; y < firstBoard[0].length; y++) {
firstBoard[x][y] = new JButton();
firstBoard[x][y].setActionCommand("0|" + (x + (firstBoard.length * y)));
firstBoard[x][y].addActionListener(this);
add(firstBoard[x][y]);
}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() instanceof JButton) {
System.out.println((((JButton) e.getSource()).getActionCommand()));
((JButton) e.getSource()).setBackground(Color.BLUE);
((JButton) e.getSource()).setContentAreaFilled(false);
((JButton) e.getSource()).setOpaque(true);
}
}
}
}
然後更換UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
這個...
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
,然後再試一次
已經運行你的代碼,它只是對我很好。你使用什麼外觀和感覺?我試過Windows,Metal和Nimbus,它們都工作得很好 – MadProgrammer
我在Mac上運行,這可能是外觀和感覺。 –
啊,是的,不能測試:P – MadProgrammer