흠에만이 blog은 그
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class FunnyMenuTest {
private JPopupMenu popupMenu;
private JMenuItem m_mniInsertRow;
private JMenuItem m_mniInsertScrip;
private JMenuItem m_mniDeleterRow;
private JMenuItem m_mniDeleteExpiredScrip;
private JMenuItem m_mniSetAlert;
public void makeUI() {
JFrame frame = new JFrame("Funny JMenu Test");
popupMenu = new JPopupMenu();
m_mniInsertRow = new JMenuItem("Insert a Row");
m_mniInsertRow.setOpaque(false);
m_mniInsertScrip = new JMenuItem("Insert a Scrip");
m_mniInsertScrip.setOpaque(false);
m_mniDeleterRow = new JMenuItem("Delete a Row");
m_mniDeleterRow.setOpaque(false);
m_mniDeleteExpiredScrip = new JMenuItem("Delete a Expired Scrip");
m_mniDeleteExpiredScrip.setOpaque(false);
m_mniSetAlert = new JMenuItem("Set Alert");
m_mniSetAlert.setOpaque(false);
popupMenu.add(m_mniInsertRow);
popupMenu.add(m_mniInsertScrip);
popupMenu.addSeparator();
popupMenu.add(m_mniDeleterRow);
popupMenu.add(m_mniDeleteExpiredScrip);
popupMenu.add(new JSeparator());
popupMenu.add(m_mniSetAlert);
JMenuBar menuBar = new JMenuBar();
for (int i = 0; i < 5; i++) {
JMenu menu = new JMenu("Menu " + i);
for (int j = 0; j < 5; j++) {
JMenuItem item = new JMenuItem("Item " + j);
item.setOpaque(false);
menu.add(item);
}
menuBar.add(menu);
}
JMenu menu = new JMenu("Menu 1");
JMenuItem item = new JMenuItem("Item ");
item.setOpaque(false);
menu.add(item);
menuBar.add(menu);
JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(400, 400));
jp.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
int x = e.getX();
int y = e.getY();
popupMenu.show(e.getComponent(), x, y);
}
}
});
frame.getContentPane().add(jp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(400, 400));
frame.setLocationRelativeTo(null);
frame.setJMenuBar(menuBar);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FunnyMenuTest().makeUI();
}
});
UIManager.put("PopupMenuUI", "JMenu.GradientPopupMenuUI");
}
}
당신을 hepl 할 수있는 경우 및
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LinearGradientPaint;
import java.awt.MultipleGradientPaint.CycleMethod;
import java.awt.Paint;
import java.awt.geom.Point2D;
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicPopupMenuUI;
public class GradientPopupMenuUI extends BasicPopupMenuUI {
private Paint paint = new LinearGradientPaint(new Point2D.Double(5, -5), new Point2D.Double(),
new float[]{0.2F, 0.9F}, new Color[]{Color.WHITE, Color.GREEN}, CycleMethod.REFLECT);
public static ComponentUI createUI(JComponent c) {
return new GradientPopupMenuUI();
}
@Override
public void paint(Graphics g, JComponent c) {
((Graphics2D) g).setPaint(paint);
g.fillRect(0, 0, c.getWidth(), c.getHeight());
}
}
"시스템 트레이에서 실행"이란 무엇을 의미합니까? 그 진술은 나에게 약간 혼란 스럽다. 당신이 말하는 것은 [this] (http://stackoverflow.com/questions/6403821/how-to-add-an-image-to-a-jframe-title-bar/6403846#6403846)입니까? – mre
다음 링크를 확인하십시오. http : //download.oracle.com/javase/tutorial/uiswing/misc/systemtray.html – Krutika
위의 링크는 시스템 트레이 기능을 설명합니다. 그라디언트를 제공하려는 메뉴가 표시됩니다. background.I이 질문에 대한 명확한 밝히기에 충분하다고 생각합니다 .. – Krutika