私はグーグルではありますが、正解は見つかりませんでした。私はJPanel
を持っており、上から下に向かって勾配を持たせたいと思っています。私はちょうど2つの色を使用するつもりです。どうすればこれを達成できますか?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は、 'setSize(..)'を呼び出すのではなく、 'JPanel'の' getPreferredSize() 'をオーバーライドし、' JFrame'で 'pack()'を呼び出すことを提案しています。 –
@DavidKroukamp 'setSize画面上に何かが見えるようになっています。この場合、Panelが後で実際にLayoutManagerを設定してコンポーネントを追加することを理解しているので、 'getPreferredSize()'をオーバーライドする必要はありません。そのため、 '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. グラデーションの背景UIScrollView
- 2. 背景グラデーションの色と背景イメージDRYly
- 3. TableViewCell背景色グラデーション
- 4. グラデーション+背景画像
- 5. カバー背景画像+グラデーション背景
- 6. CSSのグラデーションの背景ボタン
- 7. TabBarのグラデーションの背景?
- 8. divのCSSグラデーションの背景
- 9. グループボックスのグラデーションの背景
- 10. 背景のグラデーションの問題
- 11. JToolBarのグラデーションの背景
- 12. 背景のIE11グラデーションの色
- 13. Flex SWFグラデーションの背景
- 14. CSSトランジションの背景グラデーション(ハック)
- 15. WPF Datagrid.RowStyleグラデーションの背景
- 16. イオン3:グラデーションの背景
- 17. IOSの背景グラデーション - ストーリーボード
- 18. CSSグラデーションの背景でスクロール
- 19. 設定背景グラデーション - jshintエラー
- 20. のAndroidのOpenGL-ESのグラデーションの背景
- 21. PHPの時間ベースのグラデーションの背景
- 22. Androidの長方形の背景のグラデーション
- 23. スイングコンポーネントのデフォルトのグラデーションの背景
- 24. Ionic 2の背景色のグラデーション
- 25. 画像のないグラデーションの背景
- 26. 背景の上にCSSのグラデーション
- 27. JavaScriptのグラデーションの背景表から表
- 28. グラデーションの背景に白い余白IOS
- 29. グラデーションの背景を使ったスタイリングUITableViewCells
- 30. グラデーションの背景には、-webkit-勾配
http://docs.oracle.com/javase/1.4.2/docs/api/java/ awt/GradientPaint.html – MikeTheLiar
私は「スイングjpanelの背景色のグラデーション」のためにgoogledこれは最初のリンクです:http://www.javarichclient.com/how-to-add-a-gradient-background-to-any-jcomponent /情報を持っていると思われる –