나는 봤지만 정답을 찾을 수 없었다. JPanel
이 있는데 위에서 아래로 그라데이션을 갖기를 원합니다. 두 색상 만 사용하려고합니다. 이것을 어떻게 할 수 있습니까?JPanel 그래디언트 배경
답변
당신이가는 :
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
int w = getWidth();
int h = getHeight();
Color color1 = Color.RED;
Color color2 = Color.GREEN;
GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
TestPanel panel = new TestPanel();
frame.add(panel);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
좋은 예가 있는데, Id는'setPize (..) '를 호출하는 대신'JPanel'의'getPreferredSize()'를 오버라이드하고'JFrame'에'pack()'을 호출 할 것을 제안하지만 –
@DavidKroukamp'setSize()'호출 화면 상에 무엇인가를 보여주기위한 것입니다. 이 경우, getPreferredSize()를 오버라이드 (override)하고는 싶지 않습니다. Panel가 실제로 LayoutManager를 설정해 컴퍼넌트를 추가하기 위해서 (때문에) 나중에 사용되기 (위해) 때문에, getPreferredSize()는 그 LayoutManager에 의해 계산됩니다. 임의의 크기가 아닙니다. 어쨌든, 이것은 단순한 질책 일 뿐이며 두 가지 해결책 모두 똑같이 받아 들일 수 있다고 생각합니다. –
개인적으로 LinearGradientPaint를 선호하지만 필요에 따라 달라집니다.) – MadProgrammer
헤이 Bebbie이 사용할 수 있습니다
JPanel contentPane = new JPanel() {
@Override
protected void paintComponent(Graphics grphcs) {
super.paintComponent(grphcs);
Graphics2D g2d = (Graphics2D) grphcs;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0,
getBackground().brighter().brighter(), 0, getHeight(),
getBackground().darker().darker());
g2d.setPaint(gp);
g2d.fillRect(0, 0, getWidth(), getHeight());
}
};
희망 도움이; 할 수도 있습니다 다시 더 많은 도움이 artical에 : 여기 Gradient background to any jcomponent
나는 이것에 BS를 부른다. 당신이 근원에 연결하기에 충분할만큼 정직하다는 것은 좋은 일입니다. 그러나 소스가 정확하고 잘못된 방법으로 수정했습니다. 힌트 :'JComponent.setOpaque (false);'는 핵심 요소이며'super.paintComponent (grphcs);'는 마지막 호출이되어야합니다. 그렇지 않은 경우, 코드는 모든'JComponent' 객체로는 동작하지 않습니다. 또, 향후의 변경에 관해서는 강력하지는 않습니다. 하지만 포인터 주셔서 감사합니다. –
- 1. 그래디언트 위의 CSS 그래디언트 및 배경 이미지
- 2. 그래디언트 + 배경 이미지
- 3. Android LinearLayout 그래디언트 배경
- 4. JPanel 배경 이미지
- 5. 배경 이미지 : URL 및 그래디언트
- 6. 배경 무늬 위의 CSS 그래디언트
- 7. IE10의 배경 이미지 및 그래디언트
- 8. 배경 이미지 그래디언트 CSS 전환
- 9. 그래디언트 인라인과 배경 이미지를 센터링
- 10. IE 8. 그래디언트 배경 + 이미지
- 11. 일부가 투명한 배경 이미지가있는 JPanel
- 12. JPanel 배경 이미지가 변경되지 않음
- 13. JPanel 배경 이미지가 표시되지 않습니다.
- 14. CSS 그래디언트, 배경 이미지가 마우스 오버시 사라짐
- 15. Cocoapods "UIColor + uiGradients"로 배경 그래디언트 구현
- 16. Grouple 테이블 셀에 배경 그래디언트 적용
- 17. 그래디언트 + 배경 이미지가있는 배경을 가질 수 있습니까?
- 18. 그래디언트 및 이미지가있는 배경 혼합 모드
- 19. 그래디언트 배경 그라디언트 그라디언트 사라지는 텍스트
- 20. JPanel 및 JButton의 배경 이미지 사용
- 21. 다른 패널이 오버레이 된 배경 이미지가있는 JPanel
- 22. Java - 배경 이미지 및 일반 기능이있는 JPanel
- 23. 배경 이미지 도움말, JPanel, JFrame, 뭐?
- 24. JPanel 내의 JPanel
- 25. JPanel in another JPanel
- 26. CSS 그래디언트 이미지 크기?
- 27. 그래디언트 및 이미지로 배경 이미지를 전환하는 방법은 무엇입니까?
- 28. 더 큰 요소의 CSS 배경 이미지 그래디언트 및 경계선
- 29. 다른 요소를 가리키면 바디 배경 이미지/그래디언트 변경
- 30. 파이어 폭스에서 선형 그래디언트 + 배경 크기가 작동하지 않습니다.
http://docs.oracle.com/javase/1.4.2/docs/api/java/ awt/GradientPaint.html – MikeTheLiar
"스윙 jpanel 배경 색상 그라디언트"에 대한 인터넷 검색 및이 첫 번째 링크입니다 : http://www.javarichclient.com/how-to-add-a-gradient-background-to-any-jcomponent/정보를 가지고있는 것 같아 –