我想检查某个javax.swing.JButton(常规按钮)是否被按下(在它被释放之前).是否有任何选项可以检查按钮是否已关闭?
最简单的解决方案是添加一个MouseListener响应鼠标单击和释放事件的解决方案.但是,这并不包括通过Enter键或任何其他方式激活按钮的情况.我不想通过键盘或其他方式禁用激活鼠标 - 我只想知道何时按下它而不限制它的行为.
我尝试了所有不同的事件,只有两个响应按下按钮的是ActionPreformed(ActionEvent)和StateChanged(ChangedEvent)事件.ActionPreformed每次点击执行一次,这意味着只有在按下并释放按钮后才会执行,所以这并不好.当我点击一个按钮时,StateChanged确实被调用了几次,而当我发布它时,它被调试了好几次.但是,事件对象仅包含有关源窗口小部件(按钮)的信息,并且不包含有关状态更改本身的信息.这可以防止我们想要捕获哪些事件.
提前致谢!
我希望JButton看起来像HTML中的链接.它仍然是一个按钮,当我点击它时它会打开一些新的JFrame.但我想改变它的样子.我试过这个:
JButton button = new JButton();
button.setText("hi");
button.setContentAreaFilled(false);
button.setBorderPainted(false);
button.setOpaque(false);
button.setBackground(Color.WHITE);
button.setCursor(Cursor.getPredefinedCursor(12));
Run Code Online (Sandbox Code Playgroud)
但是我的按钮文本周围仍然有一些边框.我们如何完全删除边框?
我在JFrame中有一个包含5个按钮的JPanel.在另一个JPanel中有一个名为"删除按钮"的按钮,我想要做的是单击此按钮,然后通过ckicking其中一个来选择要删除的其他5个按钮.谁能帮我?
public class gui extends JFrame implements ActionListener
{
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p2 = new JPanel();
JButton b1 = new JButton("Delete");
JButton b2 = new JButton("A");
JButton b3 = new JButton("B");
JButton b4 = new JButton("C");
gui()
{
p1.setLayout(new GridLayout(1,2));
p1.add(p2);
p1.add(p3);
p2.setLayout(new GridLayout(3,1));
p2.add(b2);
p2.add(b3);
p2.add(b4);
p3.add(b1);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == b1)
// When I click this button I want to be …Run Code Online (Sandbox Code Playgroud) private void OptionsActionPerformed(java.awt.event.ActionEvent evt)
{
// After clicking on button X, I want 4 other buttons to show up
// in a sequential order
ButtonTrue();
}
public void ButtonTrue()
{
Audio_Options.setVisible(true);
letsSleep();
Control_Options.setVisible(true);
letsSleep();
Display_Options.setVisible(true);
letsSleep();
Network_Options.setVisible(true);
}
public void letsSleep()
{
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
Logger.getLogger(MainMenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我有4个按钮.我希望它们按顺序出现,例如:Button1 - 10seconds - Button2 - 10秒 - Button3 - 10seconds - Button 4
问题:每当我调用函数"ButtonTrue()"时,它们都会在等待30秒后一起出现.什么可能导致这个问题发生?
基本上,它给我一个问题,即在"for"循环中将每个按钮声明为最终,然后再添加文本.当我这样做时,它给了我很多其他错误.有人可以帮我解决这个问题吗?
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class tictactoe {
public static final int FRAME_WIDTH = 700;
public static final int FRAME_HEIGHT = 200;
public static void main(String[] args)
{
int slots = 9;
JButton[] gameButton = new JButton[9];
JPanel ticTacToeBoard = new JPanel();
ticTacToeBoard.setLayout(new GridLayout(3, 3));
for (int i = 0; i < slots; i++)
{
gameButton[i] = new JButton();
ticTacToeBoard.add(gameButton[i]);
gameButton[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
gameButton[i].setText("x");
}
});
}
JButton clearButtons …Run Code Online (Sandbox Code Playgroud) 我一直在努力为插入到具有GridLayout的JPanel中的按钮设置特定大小.
按钮总是填满整个面板,而如果我删除gridlayout,按钮将不会有相同的行为.
任何提示?
package panels;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ColorDisplay {
private final int X = 100;
private final int Y = 100;
private final Dimension PANEL_SIZE = new Dimension(500,500);
private JTextField textRed;
private JTextField textGreen;
private JTextField textBlue;
private JLabel labelText, labelRed, labelGreen, labelBlue;
private JPanel displayPanel;
private JPanel textPanel;
private JPanel buttonPanel;
private JButton …Run Code Online (Sandbox Code Playgroud) 所以目前我的程序只显示GUI右下角的一个按钮.但我想在右下角显示两个按钮.任何想法如何将两个按钮设置到右上角?到目前为止,这是我的代码:
import javax.swing.*;
import java.awt.*;
public class Other extends JFrame{
private static final long serialVersionUID = 1L;
public Other() {
super("Buttons");
final Container mainPanel = getContentPane();
mainPanel.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BorderLayout());
JPanel inputPanel = new JPanel();
inputPanel.add(new JLabel("RANDOM TEXT HERE"));
inputPanel.add(new JLabel("RANDOM TEXT HERE"));
inputPanel.add(new JLabel("RANDOM TEXT HERE"));
JButton s = new JButton("first");
JButton l = new JButton("second");
buttonPanel.add(s,BorderLayout.LINE_END);
buttonPanel.add(l,BorderLayout.LINE_END); //<-- not working
mainPanel.add(inputPanel,BorderLayout.PAGE_START);
mainPanel.add(buttonPanel,BorderLayout.PAGE_END);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] …Run Code Online (Sandbox Code Playgroud) 我有一个JTextField和一个JButton,当用户点击进入时JTextField,必须对相应的动作执行JButton.这是我的代码片段.
此外,我想禁用JButton输入并在以后更改某些内容时启用它JTextField
JButton jb=new JButton("Print");
JTextField jt=new JTextField(20);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
System.out.println(jt.getText());
}
});
Run Code Online (Sandbox Code Playgroud) 我用a CardLayout来创建2个面板.左侧主机上的JButtons那个,单击时,会在右侧面板中打开相应的网站.问题是我无法将按钮放在另一个上面.
请注意以下截图: -

我的Swing JButton代码如下所示:
Insets An_Inset=new Insets(0,0,0,0);
String Content="<Html>"+
" <Table Border=1 Cellspacing=0 Cellpadding=2 Width=48>"+
" <Tr><Td Align=Center BgColor=Blue><Font Size=3> + </Font></Td><Td Align=Center><Font Size=3> + </Font></Td></Tr>"+
" <Tr><Td Align=Center><Font Size=3> + </Font></Td><Td Align=Center><Font Size=3> + </Font></Td></Tr>"+
" </Table>"+
"</Html>";
JButton aButton=new JButton(Content);
aButton.setFont(new Font(Monospaced,0,16));
aButton.setPreferredSize(new Dimension(56,56));
aButton.setEnabled(false);
aButton.setMargin(An_Inset);
aButton.setHorizontalAlignment(SwingConstants.CENTER);
Run Code Online (Sandbox Code Playgroud)
但是"+"标记偏离中心,如何解决?
