- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试创建 JPopupMenu 或实际上尝试摆脱 JPopupMenu 时,我对代码行有所了解。我一直在寻找解决方案,所有解决方案都使用 Component.setVisible(false) 或 .setVisible(true);
但就我而言,无论我尝试什么,我都无法工作。总而言之,我的应用程序。正在工作,我将使用 System.out.println("工作正常或其他什么!");所以我知道语句已经改变,循环已经执行,ActionListener/Itemlistener 等正在工作。基本上我已经使用“CreateGUI”创建了一个主窗口,通过 main([String[] args) 调用,有一个框架类,然后放入面板和 Pane 来控制布局。在我的框架中,有一个 JButton“vHent”,它正在调用 PopKalender(),然后我的 JPopupMenu 显示在屏幕上。在 JPopupMenu“popUpKalenderWindow”中,我有一个 JButton“kill”、“OK”(未使用)和一个 MenuItem(“vMenu Tryk Her”)。
我的想法是,即从 MenuItems 中读出一些状态,此时 JButton“kill” 用于关闭 JPopupMenu。但正如所说,似乎没有什么可以关闭弹出菜单!但其他一切都按其预期工作,当使用 System.out.println() 检查时,我会读出显示循环、构造函数调用、按钮/菜单项等正在按预期工作。我尝试直接在我的 ActionPerformedListener 和 PopKalender() 下放入: popUpKalenderWindow.setVisible(false) ,尝试在 popKalender(true/false) 中强制转换参数 true/false,然后创建一个 if 语句(如您所见)现在)无论如何它都行不通。
(使用Eclipse,所以代码行被直接复制过来。一些评论是丹麦语的(我很抱歉),但是需要的行是英语的。还有一些评论是为了让我了解该行的内容和原因是这样写的!是的,CheckBox 应该位于 ArrayList 中并使用 for(){} 完成,所以这是新手解决方案! )。
那么有人可以在这里帮助我并告诉我为什么当按下“kill”按钮时 PopKalender() 不会消失吗?
//package components;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
public class Frame extends JPanel implements ItemListener, ActionListener {
private static final long _1L = 1L;
/**
*
*/
// Klargør CheckBoxes
JCheckBox tal1;
JCheckBox tal2;
JCheckBox tal3;
JCheckBox tal4;
JCheckBox tal5;
JCheckBox tal6;
JCheckBox tal7;
JCheckBox tal8;
JCheckBox tal9;
JCheckBox tal10;
JCheckBox tal11;
JCheckBox tal12;
JCheckBox tal13;
JCheckBox tal14;
JCheckBox tal15;
JCheckBox tal16;
JCheckBox tal17;
JCheckBox tal18;
JCheckBox tal19;
JCheckBox tal20;
JCheckBox tal21;
JCheckBox tal22;
JCheckBox tal23;
JCheckBox tal24;
JCheckBox tal25;
JCheckBox tal26;
JCheckBox tal27;
JCheckBox tal28;
JCheckBox tal29;
JCheckBox tal30;
JCheckBox tal31;
JCheckBox tal32;
JCheckBox tal33;
JCheckBox tal34;
JCheckBox tal35;
JCheckBox tal36;
//Klargør ArrayList til valgte tal
ArrayList<Integer> valg = new ArrayList<Integer>();
//Klargør knapper
JButton vOk; //til valgte tal Tekst: Tilføj
JButton vHent; //til at hente uge / kalender for valg af uge
JButton bRegn; //til at beregne ugen tal
//Klargør Tekster
JLabel labelValg = new JLabel("Du har valgt: "); //til valgte tal
JLabel labelTidNu = new JLabel("år-uge-dag-kl"); //til nuværende tid
JLabel labelValgTid = new JLabel("år-uge der skal skrives til"); //til valgte uge/år, der skal tilføjes Talvalg
JLabel labelUd_1 = new JLabel(" 1: "); //til udlæsning af Talforslag LabelUd_1 - LabelUd_10
JLabel labelUd_2 = new JLabel(" 2: ");
JLabel labelUd_3 = new JLabel(" 3: ");
JLabel labelUd_4 = new JLabel(" 4: ");
JLabel labelUd_5 = new JLabel(" 5: ");
JLabel labelUd_6 = new JLabel(" 6: ");
JLabel labelUd_7 = new JLabel(" 7: ");
JLabel labelUd_8 = new JLabel(" 8: ");
JLabel labelUd_9 = new JLabel(" 9: ");
JLabel labelUd_10 = new JLabel("10: ");
public Frame(){
super(new BorderLayout());
//Opret Paneler til under paneler
//Opret Top, left, center, right, buttom Panel
JPanel topPanel = new JPanel(); //Indsæt BorderLayout efter opstilling !
JPanel leftPanel = new JPanel();
JPanel centerPanel = new JPanel();
JPanel rightPanel = new JPanel();
JPanel bottomPanel = new JPanel();
//Set internt Layout for top, left, right panel
topPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
leftPanel.setLayout(new GridLayout(4, 0));
rightPanel.setLayout(new GridLayout(2, 0));
//Set størrelse på paneler
topPanel.setPreferredSize(new Dimension(900, 50));
leftPanel.setPreferredSize(new Dimension(300, 500));
centerPanel.setPreferredSize(new Dimension(300, 500));
rightPanel.setPreferredSize(new Dimension(300, 500));
bottomPanel.setPreferredSize(new Dimension(900, 50));
//tilføj paneler til frame'en og placer dem i layout'et
add(topPanel, BorderLayout.PAGE_START);
add(leftPanel, BorderLayout.LINE_START);
add(centerPanel, BorderLayout.CENTER);
add(rightPanel, BorderLayout.LINE_END);
add(bottomPanel, BorderLayout.PAGE_END);
//Opret Checkboxes
tal1 = new JCheckBox("1");
tal2 = new JCheckBox("2");
tal3 = new JCheckBox("3");
tal4 = new JCheckBox("4");
tal5 = new JCheckBox("5");
tal6 = new JCheckBox("6");
tal7 = new JCheckBox("7");
tal8 = new JCheckBox("8");
tal9 = new JCheckBox("9");
tal10 = new JCheckBox("10");
tal11 = new JCheckBox("11");
tal12 = new JCheckBox("12");
tal13 = new JCheckBox("13");
tal14 = new JCheckBox("14");
tal15 = new JCheckBox("15");
tal16 = new JCheckBox("16");
tal17 = new JCheckBox("17");
tal18 = new JCheckBox("18");
tal19 = new JCheckBox("19");
tal20 = new JCheckBox("20");
tal21 = new JCheckBox("21");
tal22 = new JCheckBox("22");
tal23 = new JCheckBox("23");
tal24 = new JCheckBox("24");
tal25 = new JCheckBox("25");
tal26 = new JCheckBox("26");
tal27 = new JCheckBox("27");
tal28 = new JCheckBox("28");
tal29 = new JCheckBox("29");
tal30 = new JCheckBox("30");
tal31 = new JCheckBox("31");
tal32 = new JCheckBox("32");
tal33 = new JCheckBox("33");
tal34 = new JCheckBox("34");
tal35 = new JCheckBox("35");
tal36 = new JCheckBox("36");
//Set default
tal1.setSelected(false);
tal2.setSelected(false);
tal3.setSelected(false);
tal4.setSelected(false);
tal5.setSelected(false);
tal6.setSelected(false);
tal7.setSelected(false);
tal8.setSelected(false);
tal9.setSelected(false);
tal10.setSelected(false);
tal11.setSelected(false);
tal12.setSelected(false);
tal13.setSelected(false);
tal14.setSelected(false);
tal15.setSelected(false);
tal16.setSelected(false);
tal17.setSelected(false);
tal18.setSelected(false);
tal19.setSelected(false);
tal20.setSelected(false);
tal21.setSelected(false);
tal22.setSelected(false);
tal23.setSelected(false);
tal24.setSelected(false);
tal25.setSelected(false);
tal26.setSelected(false);
tal27.setSelected(false);
tal28.setSelected(false);
tal29.setSelected(false);
tal30.setSelected(false);
tal31.setSelected(false);
tal32.setSelected(false);
tal33.setSelected(false);
tal34.setSelected(false);
tal35.setSelected(false);
tal36.setSelected(false);
//opret en ItemListener for Checkboxes
tal1.addItemListener(this);
tal2.addItemListener(this);
tal3.addItemListener(this);
tal4.addItemListener(this);
tal5.addItemListener(this);
tal6.addItemListener(this);
tal7.addItemListener(this);
tal8.addItemListener(this);
tal9.addItemListener(this);
tal10.addItemListener(this);
tal11.addItemListener(this);
tal12.addItemListener(this);
tal13.addItemListener(this);
tal14.addItemListener(this);
tal15.addItemListener(this);
tal16.addItemListener(this);
tal17.addItemListener(this);
tal18.addItemListener(this);
tal19.addItemListener(this);
tal20.addItemListener(this);
tal21.addItemListener(this);
tal22.addItemListener(this);
tal23.addItemListener(this);
tal24.addItemListener(this);
tal25.addItemListener(this);
tal26.addItemListener(this);
tal27.addItemListener(this);
tal28.addItemListener(this);
tal29.addItemListener(this);
tal30.addItemListener(this);
tal31.addItemListener(this);
tal32.addItemListener(this);
tal33.addItemListener(this);
tal34.addItemListener(this);
tal35.addItemListener(this);
tal36.addItemListener(this);
//Sæt CheckBoxes i 6 kolonner i et Panel
JPanel checkPanel = new JPanel(new GridLayout(0, 6));
checkPanel.add(tal1);
checkPanel.add(tal2);
checkPanel.add(tal3);
checkPanel.add(tal4);
checkPanel.add(tal5);
checkPanel.add(tal5);
checkPanel.add(tal6);
checkPanel.add(tal7);
checkPanel.add(tal8);
checkPanel.add(tal9);
checkPanel.add(tal10);
checkPanel.add(tal11);
checkPanel.add(tal12);
checkPanel.add(tal13);
checkPanel.add(tal14);
checkPanel.add(tal15);
checkPanel.add(tal16);
checkPanel.add(tal17);
checkPanel.add(tal18);
checkPanel.add(tal19);
checkPanel.add(tal20);
checkPanel.add(tal21);
checkPanel.add(tal22);
checkPanel.add(tal23);
checkPanel.add(tal24);
checkPanel.add(tal25);
checkPanel.add(tal26);
checkPanel.add(tal27);
checkPanel.add(tal28);
checkPanel.add(tal29);
checkPanel.add(tal30);
checkPanel.add(tal31);
checkPanel.add(tal32);
checkPanel.add(tal33);
checkPanel.add(tal34);
checkPanel.add(tal35);
checkPanel.add(tal36);
//Set checkpanel størrelse og tilføj det til leftPanel med en ramme
checkPanel.setPreferredSize(new Dimension(290, 290));
leftPanel.add(checkPanel);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
//leftPanel med valgte tal
leftPanel.add(labelValg);
labelValg.setPreferredSize(new Dimension(290, 25));
//Tilføj tekster
//topPanel m. nuværende tid
topPanel.add(labelTidNu);
labelTidNu.setPreferredSize(new Dimension(210, 25));
//Hjælpe funktioner til ur
Thread t = new Kalender(labelTidNu); //Bruges til at lave en tråd Thread for Kalender
t.start(); //Tråden t startes og kan kontrolleres med Thread.sleep(1000) = pause
//klargør Knapper til: valgte tal
vOk = new JButton("Tilføj Tal");
vOk.setPreferredSize(new Dimension(100, 50));
vOk.setActionCommand("vOk"); //Set ActionCommand til genkendelse
vOk.addActionListener(this); //Tilføj en Action Listener
//hent uge / kalender
vHent = new JButton("Hent Uge");
vHent.setActionCommand("vHent");
vHent.addActionListener(this);
vHent.setPreferredSize(new Dimension(100, 50));
//Beregn ugens tal
bRegn = new JButton("Beregn");
bRegn.setActionCommand("bRegn");
bRegn.addActionListener(this);
bRegn.setPreferredSize(new Dimension(100, 50));
//Opret et knap Panel
JPanel knapPanel = new JPanel();
knapPanel.setLayout(new BoxLayout(knapPanel, BoxLayout.Y_AXIS));
// knapPanel.setPreferredSize(new Dimension(290, 300));
//opret layoutpaneler med flowlayoutX til knapper og tekst
//layoutPanel1
JPanel layoutPanel1 = new JPanel();
layoutPanel1.setLayout(new FlowLayout(FlowLayout.LEFT));
layoutPanel1.setPreferredSize(new Dimension(290, 150));
//layoutPanel2
JPanel layoutPanel2 = new JPanel();
layoutPanel2.setLayout(new FlowLayout(FlowLayout.RIGHT));
layoutPanel2.setPreferredSize(new Dimension(290, 150));
//Tilføj knapper / tekster
layoutPanel1.add(vHent);
layoutPanel1.add(labelValgTid);
layoutPanel2.add(vOk);
knapPanel.add(layoutPanel1);
// knapPanel.add(fillPanel1);
knapPanel.add(layoutPanel2);
leftPanel.add(knapPanel);
setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
//Opret panel til udlæsning
JPanel listePanel = new JPanel();
listePanel.setLayout(new BoxLayout(listePanel, BoxLayout.Y_AXIS));
listePanel.setPreferredSize(new Dimension(280, 300));
//Opret Panel til Knap
JPanel knapPanel2 = new JPanel();
knapPanel2.setPreferredSize(new Dimension(280, 150));
knapPanel2.setLayout(new FlowLayout(FlowLayout.RIGHT));
//Tilføj lister / knap
listePanel.add(labelUd_1);
listePanel.add(labelUd_2);
listePanel.add(labelUd_3);
listePanel.add(labelUd_4);
listePanel.add(labelUd_5);
listePanel.add(labelUd_6);
listePanel.add(labelUd_7);
listePanel.add(labelUd_8);
listePanel.add(labelUd_9);
listePanel.add(labelUd_10);
rightPanel.add(listePanel);
knapPanel2.add(bRegn);
rightPanel.add(knapPanel2);
} //Frame end
//Lyt til Checkboxes, send resultatet til Valgtjek og opdater display / LabelValg
public void itemStateChanged(ItemEvent e){
// int index = 0;
Object kilde = e.getItemSelectable();
if(kilde == tal1){
Valgtjek(1);
}else if(kilde == tal2){
Valgtjek(2);
}else if(kilde == tal3){
Valgtjek(3);
}else if(kilde == tal4){
Valgtjek(4);
}else if(kilde == tal5){
Valgtjek(5);
}else if(kilde == tal6){
Valgtjek(6);
}else if(kilde == tal7){
Valgtjek(7);
}else if(kilde == tal8){
Valgtjek(8);
}else if(kilde == tal9){
Valgtjek(9);
}else if(kilde == tal10){
Valgtjek(10);
}else if(kilde == tal11){
Valgtjek(11);
}else if(kilde == tal12){
Valgtjek(12);
}else if(kilde == tal13){
Valgtjek(13);
}else if(kilde == tal14){
Valgtjek(14);
}else if(kilde == tal15){
Valgtjek(15);
}else if(kilde == tal16){
Valgtjek(16);
}else if(kilde == tal17){
Valgtjek(17);
}else if(kilde == tal18){
Valgtjek(18);
}else if(kilde == tal19){
Valgtjek(19);
}else if(kilde == tal20){
Valgtjek(20);
}else if(kilde == tal21){
Valgtjek(21);
}else if(kilde == tal22){
Valgtjek(22);
}else if(kilde == tal23){
Valgtjek(23);
}else if(kilde == tal24){
Valgtjek(24);
}else if(kilde == tal25){
Valgtjek(25);
}else if(kilde == tal26){
Valgtjek(26);
}else if(kilde == tal27){
Valgtjek(27);
}else if(kilde == tal28){
Valgtjek(28);
}else if(kilde == tal29){
Valgtjek(29);
}else if(kilde == tal30){
Valgtjek(30);
}else if(kilde == tal31){
Valgtjek(31);
}else if(kilde == tal32){
Valgtjek(32);
}else if(kilde == tal33){
Valgtjek(33);
}else if(kilde == tal34){
Valgtjek(34);
}else if(kilde == tal35){
Valgtjek(35);
}else if(kilde == tal36){
Valgtjek(36);
}
//Opdater og udlæs valgte
String s = valg.toString();
labelValg.setText("Du har valgt: " +s);
}
//Lyt til Knapper //Button Listener
public void actionPerformed(ActionEvent e){
Object kilde = e.getActionCommand();
if(kilde == "vOk"){
System.out.println("Tillykke vOk er Ramt");
}else{
if(kilde == "vHent"){
PopKalender(true); //Call PopUpWindow
System.out.println("Tillykke vHent er ramt"); //This works and "PopKalender" shows on screen
}else {
if(kilde == "bRegn"){
System.out.println("Tillykke der beregnes");
}
else{
if(kilde == "Kill"){
PopKalender(false);
System.out.println("KILL WINDOW"); //This read out works fine, but "PopKalender" dosen't disappear
// System.exit( 0 ); //Also work but NOT as intended !!! :D
}
}
}
} }
//Ur til topPanel
//Der oprettes en klasse
class Kalender extends Thread {
JLabel labelUrOpdater;
Kalender(JLabel labelTidNu){
labelUrOpdater = labelTidNu;
}
//Opret variabler til nutid år, måned, dag i måned, uge, dag, timer, minutter, sek
int year;
int month;
String monthName;
int date;
int dayOfMonth;
int weekOfYear;
int dayOfWeek;
int hour;
int minute;
int second;
String[] måneder = {"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" };
public void run() {
Calendar ur = new GregorianCalendar();
for(;;){
Date trialTime = new Date();
ur.setTime(trialTime);
year = ur.get(Calendar.YEAR);
month = ur.get(Calendar.MONTH);
date = ur.get(Calendar.DATE);
dayOfMonth = ur.get(Calendar.DAY_OF_MONTH);
weekOfYear = ur.get(Calendar.WEEK_OF_YEAR);
dayOfWeek = ur.get(Calendar.DAY_OF_WEEK);
hour = ur.get(Calendar.HOUR_OF_DAY);
minute = ur.get(Calendar.MINUTE);
second = ur.get(Calendar.SECOND);
monthName = måneder[month];
//Sæt 0 foran 0-9 i sekunder / minutter
if((minute <= 9) || (second <= 9)){
if(minute <= 9){
labelTidNu.setText( year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + "0" + minute + ":" + second);
}else{
if(second <= 9){
labelTidNu.setText( year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + minute + ":" + "0" + second);
}
}
}
else{
labelTidNu.setText( year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + minute + ":" + second);
// labelTidNu.repaint();
}
try { Thread.sleep(1000);
} catch(InterruptedException e){
System.out.println("Thread Error");
}
}
}
}
//Tal Checker: Se om de valgte tal er på listen, fjern eller tilføj. Call fra ItemStateChange
public void Valgtjek(int tjek) {
boolean v = valg.contains(tjek);
if(v){
int i = valg.indexOf(tjek);
valg.remove(i);
System.out.println("Fjernede");
}
else{
valg.add(tjek);
System.out.println("valgte :" + tjek);
}
}
//ActionListener for PopUpKalender "PopKalender" / ActionListener f. JPopupMenu
class PopKalValg implements ActionListener{
public void actionPerformed(ActionEvent actionEvent){
System.out.println("Valgt" + actionEvent.getActionCommand());
}
}
//Pop-up til kalender valg (Popup Menu for my Pick Calender
public void PopKalender(boolean pState){
boolean pTest = false;
JPopupMenu popUpKalenderWindow = new JPopupMenu();
// popUpKalenderWindow.setDefaultCloseOperation();
popUpKalenderWindow.setPreferredSize(new Dimension(400, 400));
popUpKalenderWindow.setLocation(700, 300);
ActionListener kalActionValg = new PopKalValg(); //ActionListener to objects inside the JPopupMenu
JPanel popPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //Panel to hold objects and control layout
JButton dOk = new JButton("OK"); //Not in use, just show
JMenuItem vMenu = new JMenuItem("vMenu Tryk Her"); //test Item to learn JMenuItem
vMenu.addActionListener( kalActionValg);
popPanel.add(vMenu);
JButton kill = new JButton("kill"); //In Use, supposed to shut down JPopupMenu
kill.setActionCommand("Kill");
kill.addActionListener(this);
popPanel.add(dOk);
popPanel.add(kill);
popUpKalenderWindow.add(popPanel);
if(pTest != pState){
popUpKalenderWindow.setVisible(true); //works fine
pTest = true;
System.out.println(pTest); // works fine, state has changed
}else{
// getRootPane().setVisible(false); //Dosen't work
// popPanel.setVisible(false); Dosen't Work
popUpKalenderWindow.setVisible(false); // Dosen't work
System.out.println("Pop set visible false"); //Do work, so loop statement has been reached !!!
}
}
private static void createAndShowGUI(){
//Create and set up window
JFrame frame = new JFrame("Mit Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Afslut Runtime ved vindue luk
frame.setPreferredSize(new Dimension(900, 600)); //Set størrelse på vinduet
/* //Create background, put background in ContentPane place it Center
JLabel bckGnd = new JLabel("");
frame.getContentPane().add(bckGnd, BorderLayout.CENTER);
*/
//Opret et Ground Panel til panels
JComponent groundPanel = new Frame();
groundPanel.setOpaque(true); //content Panes skal være opaque
frame.getContentPane().add(groundPanel); //Tilføj GroundPanel til frame
//Display Window
frame.pack();
frame.setVisible(true);
}
//SerialVersion ???
private static final long serialVersionUID = _1L;
public static void main(String[] args) {
// Schedule a job for event-dispatching thread:
//Creating and showing this Application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
createAndShowGUI();
}
});
}
}
最佳答案
老实说,你的代码很糟糕。无论如何,让您的终止按钮工作的最短方法之一是向其添加一个 ActionListener 并实现在此按钮上执行操作时会发生的情况。
使用以下代码代替此行 kill.addActionListener(this);
:
kill.addActionListener(new ActionListener()
{
public void actionPerformed ( ActionEvent e )
{
popUpKalenderWindow.setVisible( false );
}
});
要使上述代码正常工作,请将您的 popUpKalenderWindow
标记为 final
。
final JPopupMenu popUpKalenderWindow = new JPopupMenu();
关于Java JPopupMenu setVisible(false);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9649620/
我有一个 Java 小程序,它将由用户必须与之交互的几个弹出菜单组成。但是,添加时 JPopupMenu 不会显示。这是我的代码: public class Parser extends JApple
我正在尝试创建带有两个弹出菜单的系统托盘图标,一个应该用鼠标左键调用,另一个应该用鼠标右键调用。 AWT 提供了创建 PopupMenu 的简单方法,但在不创建不可见的 JFrame 或其他内容的情况
在上一个问题中,我向社区询问为什么我的 JPopupMenu 没有出现在屏幕上。 我无法想出一个简单的、可运行的、可编译的示例。 所以,这就是我为你们所做的: 区域太小,无法绘制弹出窗口吗? 我希望我
我有下一个结构:JPopupMenu包含JPanel,其中包含JMenuItems。问题是,我无法使用它,因为当鼠标进入任何菜单项时,JPopupMenu就会消失。 SSCCE: public cla
这是我的 JPopupMenu 的代码以及我如何添加它,当我右键单击表格时它应该做出响应: JMenuItem deleteRows = new JMenuItem("Delete Row")
我有一个弹出菜单,其中包含一个带有图标 (I) 的 JMenuItem 和一个 JList。见下图。 ------------------------ | I | Clear |
我正在制作一个程序,它有一个带有两个按钮的弹出菜单,其中一个按钮应该关闭弹出菜单,但我不知道如何做到这一点,而且谷歌搜索也不太顺利。 我尝试过使用 popup.hide() 但菜单不会回来,尽管当我尝
我想在翻转事件时更改 jMenuItems 的背景颜色: 现在它是蓝色的,我想要白色的,我该怎么办? (我使用netbeans GUI) 最佳答案 你可以使用类似的东西: UIManager.put(
我在 JTable 上的弹出菜单以及该 JTable 允许多个间隔选择这一事实上遇到问题。我将详细解释我的情况,希望尽可能清楚。 我有一个基本数据类,我们称之为 Item,带有一个字符串 id(名称)
我有一个用于运行锦标赛的 Java 应用程序,在其中我构建了一个自动建议功能,该功能从数据库中获取名称并将其显示在 JPopupMenu 中。我无法根据需要复制这个错误,但偶尔一个 JPopupMen
我编写了一个简单的程序来了解 JPopupMenu 的工作原理。但我的代码有问题,它没有正确显示弹出菜单。请问谁能告诉我原因吗? public class PopUpMenu extends JFra
有关 JPopupMenu 行为的问题。我希望 JPopupMenu 在出现时不要失去焦点。此外,当 JPopupMenu 获得焦点时,用户应该能够单击/更新 Applet 的其他部分。 这可能吗?原
因此,对于我的学校项目,我正在创建一个类图制作器。我已经完成了 95%,我所需要的就是让 Jpopup 菜单出现。在核心中我有 3 个文件。扩展 JFrame 的 ApplicationModel、扩
我有一个弹出菜单,当鼠标悬停在组件上时会打开该菜单。现在我希望能够在弹出窗口仍然打开时开始拖动组件,但弹出菜单关闭事件总是消耗第一次鼠标单击。有解决方法吗? 最佳答案 public clas
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我需要添加右键JPopupMenu到世界风显示。世界风显示位于 JPanel 。我几乎只是复制了ApplicationTemplate.AppPanel的成员变量和方法。 World Wind 示例中
下面我准备了一个小测试用例。我的问题是当我右键单击窗口时。 JPopupMenu 出现,但如果我单击 JWindow 菜单外的任何地方,它不会消失。我必须单击窗口上的某处才能摆脱它,这不是预期的行为。
我正在用 Java Swing 编写一个程序,在这个程序中会有一个搜索栏(这将是一个 JTextField),当在此字段中输入内容时,我想直接在弹出菜单中显示搜索结果在搜索栏下方,就像谷歌一样。我不必
如何获取当前显示在屏幕上的所有 JPopupMenu 组件的列表。 或者获取所有 JPopupMenu 组件,然后可以通过可见性、有效性等进行过滤。 我需要这个来编写测试。卡在 JPopupMenu-
我需要删除 JPopupMenu 中的背景和 Border。 JPopupMenu 应该是完全透明的。覆盖 paintComponent 不会给出肯定的结果。我也尝试在 BasicMenuItemUI
我是一名优秀的程序员,十分优秀!