我有一個JButton,名為Graphics:
我已經添加了自定義圖片,并將其添加到螢屏上。
我已經為選單項添加了自定義影像,我無法使用箭頭鍵導航到任何選單項。
第二個問題是,彈出選單沒有粘在框架內,請告訴我如何使它粘在JFrame或圖形按鈕內。
我已經嘗試了KeyListener,但是沒有成功。
在下面的代碼中,我創建了一個JPopupMenu并初始化了它,在KeyListener函式中,我試圖解決導航的問題,但它沒有成功。
popgraphics=new JPopupMenu();
JMenuItem p1920=new JMenuItem() 。
JMenuItem p1536=new JMenuItem() 。
JMenuItem p1280=new JMenuItem() 。
p1920.setIcon(new ImageIcon(getClass().getResource("icons1920p.png") )。
p1536.setIcon(new ImageIcon(getClass().getResource("icons1536p.png") )。
p1280.setIcon(new ImageIcon(getClass().getResource("icons1280p.png") )。
p1920.setBorder(b1)。
//p1920.setText("1920x1080 Pixels");.
// p1536.setText("1536x1440 Pixels");.
//p1280.setText("1280x720 Pixels");
p1920.setFont(new Font("MV Boli",0,14) ) 。
p1536.setFont(new Font("MV Boli",0,14) )。)
p1280.setFont(new Font("MV Boli",0,14) )。
p1920.setOpaque(false)。
p1536.setOpaque(false)。
p1536.setOpaque(false)。
//popgraphics.setSelected(null);.
//popgraphics.setSelectionModel(SingleSelectionModel);
popgraphics.addKeyListener(new KeyListener()
{
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar()==(char)38)
{
if(popgraphics.getSelectionModel().getSelectedIndex() ==1)
{
popgraphics.getSelectionModel().setSelectedIndex(3) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 2)
{
popgraphics.getSelectionModel().setSelectedIndex(1) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 3)
{
popgraphics.getSelectionModel().setSelectedIndex(2) 。
}
}
if(e.getKeyChar()==(char)40)
{
if(popgraphics.getSelectionModel().getSelectedIndex() ==1)
{
popgraphics.getSelectionModel().setSelectedIndex(2) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 2)
{
popgraphics.getSelectionModel().setSelectedIndex(3) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()==3)
{
popgraphics.getSelectionModel().setSelectedIndex(1) 。
}
}
}
@Override; }
public void keyPressed(KeyEvent e) {
if(e.getKeyChar()==(char)38)
{
if(popgraphics.getSelectionModel().getSelectedIndex() ==1)
{
popgraphics.getSelectionModel().setSelectedIndex(3) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 2)
{
popgraphics.getSelectionModel().setSelectedIndex(1) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 3)
{
popgraphics.getSelectionModel().setSelectedIndex(2) 。
}
}
if(e.getKeyChar()==(char)40)
{
if(popgraphics.getSelectionModel().getSelectedIndex() ==1)
{
popgraphics.getSelectionModel().setSelectedIndex(2) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()== 2)
{
popgraphics.getSelectionModel().setSelectedIndex(3) 。
}
else if(popgraphics.getSelectionModel().getSelectedIndex()==3)
{
popgraphics.getSelectionModel().setSelectedIndex(1) 。
}
}
}
@Override; }
public void keyReleased(KeyEvent e) {
}
});
popgraphics.add(p1280)。
popgraphics.add(p1536);
popgraphics.add(p1920);
點p=graghics.getLocation()。
popgraphics.setLocation(p);
popgraphics.setBackground(new Color(20,20,20) 。)
popgraphics.setOpaque(false)。
如果需要任何其他資訊,請告訴我。
uj5u.com熱心網友回復:
這里有一個簡單的程式,顯示一個帶有大圖示的JButton。一個JPopupMenu被連接到JButton上。JPopupMenu包含兩個JMenuItem,其中每個都有自己的獨立圖示。運行該程式。將滑鼠指標放在JButton上。調出JPopupMenu。(在我的Windows 10機器上,我點擊滑鼠右鍵顯示JPopupMenu。) 然后點擊鍵盤上的向下箭頭鍵。
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class PopupTst {
private void createAndDisplayGui() {
JFrame frame = new JFrame() 。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。
Icon ico = new ImageIcon(" first icon")。//用圖示的實際路徑替換。
JButton button = new JButton(ico)。
JPopupMenu popup = new JPopupMenu()。
Icon ico2 = new ImageIcon("second icon") 。//用圖示的實際路徑替換。
JMenuItem one = new JMenuItem(ico2)。
popup.add(one)。
Icon ico3 = new ImageIcon("third icon") 。//用圖示的實際路徑替換。
JMenuItem two = new JMenuItem(ico3)。
popup.add(two);
button.setComponentPopupMenu(popup);
frame.add(button);
frame.pack();
frame.setLocationByPlatform(true)。
frame.setVisible(true)。
}
public static void main(String[] args){
PopupTst instance = new PopupTst() 。
EventQueue.invokeLater(() -> instance.createAndDisplayGui())。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310272.html
標籤:


