JPanel을 만들고 조금 수정했습니다. 그라디언트 색상을 배경으로 변경합니다. 여기 클래스입니다. JPanel의 구성 요소가 표시되지 않습니다.
public class JGradientPanel extends JPanel {
private static final int N = 32;
private Color color1, color2;
public JGradientPanel(Color color1, Color color2) {
this.setBorder(BorderFactory.createEmptyBorder(N, N, N, N));
this.color1 = color1;
this.color2 = color2;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
//Color color1 = getBackground();
//Color color2 = color1.darker();
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(
0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
}
지금 내가 패널에 몇 가지 구성 요소를 추가하지만 아무것도 표시되지 않았습니다, 여기
public JPanel getMenu() {
JGradientPanel menu = new JGradientPanel(Color.WHITE, Color.white.darker());
int menuHeight = (int) ((int) getHeight() * 0.07);
menu.setPreferredSize(new Dimension(screenWidth,menuHeight));
menu.setLayout(new GridLayout(1,10));
menu.setBackground(Color.LIGHT_GRAY);
//test
JGradientButton test = new JGradientButton("test",Color.GREEN, Color.BLUE);
menu.add(test);
JLabel space = new JLabel(); // first blank space on the menu
space.setBounds(0, 0, menu.getPreferredSize().width - 50, menu.getPreferredSize().height);
space.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.GREEN));
menu.add(space);
JLabel moreSpaces[] = new JLabel[6];
buttons = new JButton[buttonLabels.length];
for(int counter = 0; counter < moreSpaces.length + buttonLabels.length; counter ++) {
if(counter < 3) {
buttons[counter] = new JButton(buttonLabels[counter]); //menu buttons
} else {
moreSpaces[counter - 3] = new JLabel(); // the rest of the blank in the menu
}
}
// adding components to menu panel
for(int counter = 0; counter < moreSpaces.length + buttonLabels.length; counter ++){
if(counter < 3) {
buttons[counter].setFocusPainted(false);
menu.add(buttons[counter]);
} else {
menu.add(moreSpaces[counter - 3]);
}
}
return menu;
}
내가 뭔가를 놓친 건가 코드 또는 내가 그것을 잘못을 했습니까? 내 코드에 무슨 문제가 있습니까? 결코 반환 PreferredSize to JPanel에 기본적으로 public void paintComponent(Graphics g) {
으로 public class JGradientPanel extends JPanel {
다른'JFrame' 또는 동등한이'JPanel' 독립형 또는 추가인가? 또한 가시적으로 설정되어 있습니까? – asgs
JFrame에 추가됩니다. – user1708134
간단한 JPanel을 사용하면 구성 요소에 – user1708134