- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用切换按钮来更改两个名为 toggled
的 Jlabel和untoggled
与 ActionListener
.
我已经让它工作了,如果你按下按钮,它会显示 toggled
Jlabel 并隐藏 untoggled
J标签。我没有任何错误,但是当我取消切换它时,它保持与选定或切换状态相同。
这是 JToggleButton
代码:
JToggleButton tglbtnNewToggleButton = new JToggleButton("New toggle button");
tglbtnNewToggleButton.setBounds(351, 387, 121, 23);
tglbtnNewToggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();
boolean selected = abstractButton.getModel().isSelected();
if (selected =true) {
untoggled.setVisible(false);
toggled.setVisible(true);
}
else{
toggled.setVisible(false);
untoggled.setVisible(true);
}
}
});
这是完整的代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Image;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.Panel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
public class JFrameButtons2 extends JFrame {
private JPanel contentPane;
private JTable table;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JFrameButtons2 frame = new JFrameButtons2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public JFrameButtons2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 850, 505);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("");
Image img = new ImageIcon(this.getClass().getResource("/Jtabletop.jpg")).getImage();
label.setIcon(new ImageIcon(img));
label.setBounds(22, 62, 802, 25);//label.setBounds(22, 54, 802, 25);
contentPane.add(label);
JLabel toggled = new JLabel("");
Image imgTog = new ImageIcon(this.getClass().getResource("/ToggledButton.jpg")).getImage();
toggled.setIcon(new ImageIcon(imgTog));
toggled.setBounds(88, 374, 87, 50);
contentPane.add(toggled);
JLabel untoggled = new JLabel("");
Image imgUnTog = new ImageIcon(this.getClass().getResource("/UntoggledButton.jpg")).getImage();
untoggled.setIcon(new ImageIcon(imgUnTog));
untoggled.setBounds(88, 374, 87, 50);
contentPane.add(untoggled);
//Image imgTog = new ImageIcon(this.getClass().getResource("/ToggledButton.jpg")).getImage();
//Image imgUnTog = new ImageIcon(this.getClass().getResource("/UntoggledButton.jpg")).getImage();
JToggleButton tglbtnNewToggleButton = new JToggleButton("New toggle button");
tglbtnNewToggleButton.setBounds(351, 387, 121, 23);
tglbtnNewToggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();
boolean selected = abstractButton.getModel().isSelected();
if (selected =true) {
untoggled.setVisible(false);
toggled.setVisible(true);
}
else{
toggled.setVisible(false);
untoggled.setVisible(true);
}
}
});
contentPane.add(tglbtnNewToggleButton);
JButton btnUpdated = new JButton("");
btnUpdated.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "This would run the SQL query for last updated");
}
});
btnUpdated.setBounds(731, 53, 81, 34);
//Transparent
btnUpdated.setOpaque(false);
btnUpdated.setContentAreaFilled(false);
btnUpdated.setBorderPainted(false);
//
contentPane.add(btnUpdated);
Panel panel = new Panel();
panel.setBounds(0, 85, 824, 272);
contentPane.add(panel);
panel.setLayout(null);
table = new JTable();
table.setBounds(23, 0, 789, 261);//table.setBounds(19, 0, 795, 261);
table.setRowHeight(20);
table.setShowVerticalLines(true);
table.setModel(new DefaultTableModel(
new Object[][]{
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null},},
//
new String[]{ "", "", "", "","", "", "","", "","" }) {//10 columns
boolean[] columnEditables = new boolean[]{
false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
// private String[] columnNames = {"1", "2", "3", "4", "5", "6" , "7"};
panel.add(table);
textField = new JTextField();
textField.setBounds(10, 54, 81, 25);
textField.setOpaque(false);
textField.setBorder(null);
contentPane.add(textField);
textField.setColumns(10);
toggled.setVisible(false);
}
}
最佳答案
您没有对 JToggleButton 使用操作监听器。您使用项目监听器。
这是您的代码,已格式化并且可以正常工作。我必须修复一些编译器错误并注释掉您的图像代码,因为您没有提供图像。
使用空布局和绝对定位将来会导致更多问题。看看Swing layouts .
import java.awt.EventQueue;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
public class JFrameButtons2 extends JFrame {
private static final long serialVersionUID = 7995601194086901586L;
private JPanel contentPane;
private JTable table;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JFrameButtons2 frame = new JFrameButtons2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public JFrameButtons2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 850, 505);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("");
// Image img = new
// ImageIcon(this.getClass().getResource("/Jtabletop.jpg"))
// .getImage();
// label.setIcon(new ImageIcon(img));
label.setBounds(22, 62, 802, 25);// label.setBounds(22, 54, 802, 25);
contentPane.add(label);
final JLabel toggled = new JLabel("toggled");
// Image imgTog = new ImageIcon(this.getClass().getResource(
// "/ToggledButton.jpg")).getImage();
// toggled.setIcon(new ImageIcon(imgTog));
toggled.setBounds(88, 374, 87, 50);
contentPane.add(toggled);
final JLabel untoggled = new JLabel("untoggled");
// Image imgUnTog = new ImageIcon(this.getClass().getResource(
// "/UntoggledButton.jpg")).getImage();
// untoggled.setIcon(new ImageIcon(imgUnTog));
untoggled.setBounds(88, 374, 87, 50);
contentPane.add(untoggled);
// Image imgTog = new
// ImageIcon(this.getClass().getResource("/ToggledButton.jpg")).getImage();
// Image imgUnTog = new
// ImageIcon(this.getClass().getResource("/UntoggledButton.jpg")).getImage();
JToggleButton tglbtnNewToggleButton = new JToggleButton(
"New toggle button");
tglbtnNewToggleButton.setBounds(351, 387, 121, 23);
tglbtnNewToggleButton.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
untoggled.setVisible(false);
toggled.setVisible(true);
} else {
toggled.setVisible(false);
untoggled.setVisible(true);
}
}
});
contentPane.add(tglbtnNewToggleButton);
JButton btnUpdated = new JButton("");
btnUpdated.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null,
"This would run the SQL query for last updated");
}
});
btnUpdated.setBounds(731, 53, 81, 34);
// Transparent
btnUpdated.setOpaque(false);
btnUpdated.setContentAreaFilled(false);
btnUpdated.setBorderPainted(false);
//
contentPane.add(btnUpdated);
Panel panel = new Panel();
panel.setBounds(0, 85, 824, 272);
contentPane.add(panel);
panel.setLayout(null);
table = new JTable();
table.setBounds(23, 0, 789, 261);// table.setBounds(19, 0, 795, 261);
table.setRowHeight(20);
table.setShowVerticalLines(true);
table.setModel(new DefaultTableModel(
new Object[][] {
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null },
{ null, null, null, null, null, null, null, null, null,
null }, },
//
new String[] { "", "", "", "", "", "", "", "", "", "" }) {
boolean[] columnEditables = new boolean[] { false, false, false,
false, false, false, false };
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
// private String[] columnNames = {"1", "2", "3", "4", "5", "6" , "7"};
panel.add(table);
textField = new JTextField();
textField.setBounds(10, 54, 81, 25);
textField.setOpaque(false);
textField.setBorder(null);
contentPane.add(textField);
textField.setColumns(10);
toggled.setVisible(false);
}
}
关于java - 使用 ActionListener 更改两个 Jlabel 的 JToggleButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35532641/
我已经创建了一个蛇梯游戏,它运行良好,但现在我想对其进行一些修改。我希望每个玩家都有两个棋子/玩家而不是一个。现在的新规则变成,同一玩家的两个棋子可以占据同一个方 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 的颜色发生变化之外,不会发生任何事情。将被注册到实
我是一名优秀的程序员,十分优秀!