- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JLabel,我需要从另一个类对其进行 setText。我们将其称为 JLabel soupLabel。
soupLabel 位于 JPanel 类(类扩展 JPanel)中,称为 SoupPage。 SoupPage实际上是mainGUI类的一张卡片。
我有另一个类,称为确认类(类扩展 JFrame)。该类是在 Soup Class 中按下按钮后弹出的。
我尝试从确认类设置文本 soupLabel (位于 Soup 类中),但无济于事。
主GUI
public class mainGUI extends JFrame{
private CardLayout card;
public mainGUI(){
card = new CardLayout();
setLayout(card);
}
private void createSoupPage(){
SoupPage sp = new SoupPage(this);
add(sp, "Soup Page");
}
}
已编辑:带有确认弹出的 SoupPage
public class SoupPage extends JPanel{
mainGUI gui;
public JLabel soupLabel;
public JButton cfmBtn;
public SoupPage(mainGUI gui){
this.gui = gui;
soupLabel = new JLabel("blabla");
cfmBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Confirmation cfmPopUp = new Confirmation();
}
});
}
}
确认
public class Confirmation extends JDialog{
JButton clrBtn;
public Confirmation(){
SoupPage sp = new SoupPage();
clrBtn = new JButton("Clear");
clrBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
sp.soupLabel.setText("some other text bla bla");
}
});
}
}
这是不起作用的部分。
最佳答案
这永远不会起作用。这是因为您正在尝试设置从未添加到 mainGUI 的不同 SoupPage 对象的 soupLabel 文本。您需要做的是设置在 mainGUI 类中声明的 SoupPage 类实例的 souplabel 的文本。您应该做什么?
1. 不要使用 JFrame 进行弹出。将其更改为 JDialog。当任务栏中出现两个图标时,看起来很奇怪,而且可能存在焦点问题。
2. 接下来,为了解决您的实际问题,请在 mainGUI 中的私有(private)方法之外声明一个 SoupPage 实例。然后像这样重新定义您的Confirmation类
public class Confirmation extends JDialog{
JButton clrBtn;
public Confirmation(SoupPage sp){
clrBtn = new JButton("Clear");
clrBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
sp.soupLabel.setText("some other text bla bla");
}
});
}
}
现在,当从 mainGUI 调用确认时,只需传递在那里声明的实例。更新
尝试一下我修改了所有三个类并进行测试的代码,它将根据您的需求完美地工作
class mainGUI extends JFrame{
private CardLayout card;
private SoupPage sp;
mainGUI(){
card = new CardLayout();
setLayout(card);
}
private void createSoupPage(){
sp = new SoupPage(this);
add(sp,"Soup Page");
}
public void setSoupPageText(String text){
sp.soupLabel.setText(text);
}
}
class SoupPage extends JPanel{
mainGUI gui;
JLabel soupLabel;
JButton cfmBtn;
SoupPage(mainGUI gui){
this.gui = gui;
soupLabel = new JLabel("blabla");
cfmBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Confirmation cfmPopUp = new Confirmation(gui);
}
});
}
}
class Confirmation extends JDialog{
JButton clrBtn;
Confirmation(mainGUI gui){
clrBtn = new JButton("Clear");
clrBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
gui.setSoupPageText("some other text bla bla");
}
});
}
}
关于java - 我无法从另一个类设置 JLabel 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095554/
我已经创建了一个蛇梯游戏,它运行良好,但现在我想对其进行一些修改。我希望每个玩家都有两个棋子/玩家而不是一个。现在的新规则变成,同一玩家的两个棋子可以占据同一个方 block ,因此我需要一种方法将它
抱歉标题含糊不清,但我想不出我想在标题中做什么。无论如何,对于图像上的文本,我使用了 JLabel 文本并将其添加到图标中。 JLabel icon = new JLabel(new Imag
我想将我的私有(private) jlabel 对象复制到一个新的 jlabel 对象并将新的 jlabel 对象公开。想法是允许任何人访问 jlabel 的属性,但不允许进行任何将显示在原始界面上的
我有一个由二维 int 数组组成的网格。 基本包含00、01、02等,无需赘述。 我有一种提取网格位置的方法,然后使用字符串生成器操作字符串,将其更改为“jxy”(x = 网格中的 x 位置,y =
我目前正在尝试将 tabIconLabels(即 JLabels)放在更大的 JLabel(tabAreaLabel)上(所有标签都附加有 ImageIcon)。我尝试使用 OverlayLayout
我一直在尝试将一个 JLabel 放在另一个 Roguelike 之上。不幸的是,它似乎不起作用。到目前为止,这是我的代码: public void updateDraw(int direction)
我正在为 Tic Tac Toe 项目开发 GUI,其中我希望在单击相应区域时显示图像(玩家的移动)。但是,我不知道如何在另一个 JLabel(背景)之上显示 JLabel(移动)。 我已经搜索并尝试
public void movePiece(JLabel destination){ JLabel currentPiece = piece[oldIndex[0]][oldIndex[1]];
我在这方面遇到了障碍,希望能得到一些见解。 这是我想要实现的基本要点: -我有一个 piece 类(扩展 JPanel),它有一个 JRadioButton 数组,以及一个 JLabel 根据选择的按
我有一个名为 iconLabel 的类,它扩展 JLabel 来制作按钮。我使用 Font Awesome 字体将 JLabel 的文本设置为图标。我还在构造函数中向 iconLabel 对象添加了另
我对Java真的很陌生,我想制作一个简单的GUI,其中有一个按钮,当你点击它时就会计数,我遵循this YouTube 上的教程即可实现这一目标。一切都很顺利,一切都很顺利。但有一件事没有,JLabe
假设我有一个 JLabel 大小 20x20。现在假设我添加了字符串“The Quick Brown Fox Jumps Over the Lazy Dog”。这句话对于 JLabel 来说太长,因此
我有以下代码: try { File file_background = new File( "C:\\Users\\xxxx\\Desktop\\ba
我使用 netbean 创建了一个 jframe,并向该 jframe 添加了一个 jlabel (changeLbl)。之后,我向该 jframe 添加了一个 jbutton。现在我需要创建一个新的
Game(){ JFrame frame = new JFrame("Display Image"); JPanel panel = (JPanel)frame.getContentP
我在 swing 中使用带有图标的 Jlabel。我从我的计算机中选择了一个图像作为图标,但我找不到一种方法让它自动调整为 Jlabel 的大小。因为我想要的图像比 Jlabel 的大小大得多,所以我
是否可以在另一个 JLabel 之上添加一个 JLabel?谢谢。 最佳答案 简短的回答是肯定的,因为 JLabel是 Container , 所以它可以接受 Component (JLabel 是
我试图在我的 GUI 中显示卡片,我想重叠卡片以节省空间。但是,我似乎无法让它工作。我目前正在使用 MigLayout,尽管感觉它更像是一个 JLabel 问题而不是其他问题。 要从高层次来描述它,请
我正在将布局设置为 null,我有一个具有宽高比的 JFrame,并且在调整大小期间,该框架保持相同的宽高比。 每次我调整框架大小时,我都会调整所有组件的大小,没有任何问题,只是使用 JLabel 调
现在,我正在开发另一个 JPanel与 9 JLabel每个分配有不同的 Color 。应用程序要做的是,当用户单击第一个面板时,除了 JLabel 的颜色发生变化之外,不会发生任何事情。将被注册到实
我是一名优秀的程序员,十分优秀!