现在我通过使用改变按钮的背景颜色
button.setBackground(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)
这是一个例子.
但是当我有一个巨大的网格jbuttons(1000+)时,只需运行for循环来改变每个按钮的背景是非常非常慢的.你可以看到网格慢慢变白,一帧一帧.我真的不想要这个
有没有更好的方法将网格上的每个JButton同时更改为相同的颜色?
这就是我制作网格的方式,所使用的数字仅仅是例如......
grid = new JPanel(new GridLayout(64, 64, 0, 0));
Run Code Online (Sandbox Code Playgroud)
这是4096个按钮,将每个按钮更改为相同颜色需要大约30秒以上.
编辑1:我需要按钮是可点击的,就像当我点击一个按钮时,它变为蓝色.单击所有按钮时,将每个按钮的颜色更改为白色.现在我的工作正常,但改变每个按钮的颜色只是很慢.
编辑2:这就是我改变按钮的方式:
new javax.swing.Timer(300, new ActionListener() {
int counter = 0;
public void actionPerformed(ActionEvent e) {
if (counter >= counterMax) {
((Timer) e.getSource()).stop();
}
Color bckgrndColor = (counter % 2 == 0) ? flashColor : Color.white;
for (JButton button : gridButton) {
button.setBackground(bckgrndColor);
}
counter++;
}
}).start();
Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的工具,用户输入他们的字符串或RNA或DNA,然后点击一个按钮然后转录它.当我点击我的转录或反转录JButton时没有任何反应!请帮忙!任何方向,提示或帮助都会很棒!谢谢!这是我的代码:
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TextArea;
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.JPanel;
import java.awt.event.*;
public class TranslationGUI extends javax.swing.JFrame implements ActionListener
{
public static final int WIDTH = 1500;
public static final int HEIGHT = 500;
TextArea DNATextArea, RNATextArea, proteinTextArea;
JButton transcribe, translate, reverseTranscribe;
String DNA;
String RNA;
/** Creates new form TranslationGUI */
public TranslationGUI()
{
super("Transcription and Translation Tool");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new …Run Code Online (Sandbox Code Playgroud) 我需要开发一个带有GUI的Java应用程序,它代表一台ATM机器.为此,我必须从"键盘"(9个按钮)中读取帐号和PIN.我必须读取按下的每个按钮的每个动作(动作监听器返回按钮的值),并将其数字连接到一个字符串,当按下"ok"按钮时它应该返回int(Integer.parseInt()).我的问题是如何"等待\停止\冻结"我的程序,直到引入数字并按下"确定"?
如果这个问题有点令人困惑,我很抱歉
谢谢你的帮助 ;)
PS我为ATM机的每个部分都有一个班级.EG:键盘,屏幕,ATM等.
PSS如果你想看一些代码,请告诉;)
嗨希望有人可以告诉我我的关键事件我做错了什么.
我使用卡片布局来浏览我的两个JPanels atm.为此,我使用了Action Events和Key Events.当按下按钮时,动作事件将在JPanel之间切换,而当按下按键时,按键事件将隐藏按钮.所有关键事件都很好,它做我想要的(在其中一个面板上调用一个方法来设置放在其中的按钮的边界eq:button.setBounds(-1,-1,150,40);但是当我按下任何按钮,按键事件不响应,尽管我按下的按钮上没有任何事件.下面是我的代码,为简单起见,我删除了面板的非相关部分,就像它们要做的那样.
在此先感谢,如果我需要提供更多线索或更多地编辑代码,请告诉我,我会尽力使代码更清晰.
public class PanelContainer extends JPanel implements ActionListener, KeyListener{
GamePanel game = new GamePanel();
MainMenuPanel mainMenu = new MainMenuPanel();
CardLayout cards = new CardLayout();
public PanelContainer(){
setLayout(cards);
this.setFocusable(true);
this.addKeyListener(this);
mainMenu.newGameButton.addActionListener(this);
add(mainMenu, "Card1");
add(game, "Card2");
}
@Override
public void actionPerformed(ActionEvent aevt){
cards.show(this, "Card2");
game.action();
}
@Override
public void keyTyped(KeyEvent kevt){
}
@Override
public void keyPressed(KeyEvent kevt){
}
@Override
public void keyReleased(KeyEvent kevt){
if(kevt.getKeyCode() == KeyEvent.VK_ESCAPE || kevt.getKeyChar() == 'O' || kevt.getKeyChar() == 'o'){
game.shw(); //shw() is …Run Code Online (Sandbox Code Playgroud) 我需要在Jtable的单元格中添加一个按钮来执行某些操作.我搜索了很多方法但没有使用Netbeans.我希望你的帮助,因为我也为社区做出贡献.提前致谢.!!
VL
假设有一个名称按钮数组:
private JButton buttons [] = new JButton [9];
如何将此阵列中所有按钮的颜色设置为蓝色?
这是我的整个代码:这是一个使用按钮的Tic Tac Toe游戏.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.BorderLayout;
public class TicTacToe implements ActionListener {
private JButton buttons[] = new JButton[9];
private JFrame window = new JFrame("Tic Tac Toe");
private boolean win = false;
private int count = 0;
private int Xwins = 0, Owins = 0;
private String letter = "";
private int[][] winCombinations = new int[][] {
{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, …Run Code Online (Sandbox Code Playgroud) 我有大量问题打包我的java程序,其中包含图像到jar转换为可执行文件.图像已用于程序和按钮的背景中.请参阅下图,其中显示了我希望转换为jar的程序.

如您所见,程序运行正常.我创建了相同的程序,没有自定义背景和自定义按钮,不包含图像,我成功将其打包到一个jar中,然后打包成.exe文件.
关于绘制我的背景,我这样做如下:
public void paintComponent(Graphics g) {
Image img = new ImageIcon("imgs/Bgnd1.jpg").getImage();
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
g.drawImage(img, 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)
关于使用图像创建我的4个自定义按钮,我正在执行以下操作:
// Prepare rollover images
ImageIcon F1 = new ImageIcon("imgs/btn_f1_not_selected.jpg");
ImageIcon F1rollOver = new ImageIcon("imgs/btn_f1_selected.jpg");
// Create F1 button
final JButton btnF1 = new JButton(F1);
//btnF1.setOpaque(false);
btnF1.setContentAreaFilled(false);
btnF1.setBorder(null);
btnF1.setBorderPainted(false);
btnF1.setFocusPainted(false);
btnF1.setRolloverIcon(F1rollOver);
Run Code Online (Sandbox Code Playgroud)
我尝试将图像放在bin文件夹中,并且为了创建背景,我改变了上述关于图像的声明/获取的方法.
public void paintComponent(Graphics g) {
String path = "Bgnd11.jpg";
java.net.URL imgURL = getClass().getResource(path);
Image img = new ImageIcon(imgURL).getImage(); …Run Code Online (Sandbox Code Playgroud) import java.awt.*;
import java.awt.event.*;
public class sample2 extends Frame
{
Button b[];
public sample2()
{
super("trying");
b=new Button[10];
setLayout(new FlowLayout());
for(int i=0;i<10;i++)
add(b[i]);
}
public static void main(String args[])
{
sample2 obj=new sample2();
obj.setSize(500,100);
obj.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
例外情况如下
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1037)
at java.awt.Container.add(Container.java:373)
at sample2.<init>(sample2.java:13)
at sample2.main(sample2.java:17)
Run Code Online (Sandbox Code Playgroud) 我有一个java应用程序 - 一个计算器.我想通过调整应用程序窗口的大小来动态调整按钮的字体大小.怎么实现呢?
我的想法是使用ComponentEvents.我有应用程序窗口的初始大小和初始字体的大小.我想根据按钮的大小更改字体大小,受窗口大小更改的影响.问题是如何在overriden方法中使用[初始窗口大小]/[初始字体大小]的比例?每种字体的比例都不同.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
public class Main extends JFrame {
public Main() {
super("Test");
JPanel cPane = (JPanel) getContentPane();
cPane.setLayout(new BorderLayout());
MyButton sampleButton = new MyButton("Sample text");
sampleButton.setFont(new Font("Sans Serif", Font.PLAIN, 20));
MyButton a, b, c, d;
a = new MyButton("a");
b = new MyButton("b");
c = new MyButton("c");
d = new MyButton("d");
cPane.add(a, BorderLayout.PAGE_START);
cPane.add(b, BorderLayout.PAGE_END);
cPane.add(c, BorderLayout.LINE_START);
cPane.add(d, BorderLayout.LINE_END);
cPane.add(sampleButton, BorderLayout.CENTER);
setSize(300, 200);
setResizable(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
public static void …Run Code Online (Sandbox Code Playgroud) 我尝试用ImageIcon完全填充Jbutton的“表面”。到目前为止,我的结果是:

如您所见,“退出”标签的边缘与按钮的边缘之间仍然存在一些空间。您可以在背景上看到带有白色蓝色填充的按钮。我想要的是用标签完全覆盖此按钮。
有没有办法做到这一点?
这是我的代码:
package footballQuestioner;
import java.awt.AlphaComposite;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Beiexamples {
public static void main(String[] args) {
JFrame frame = new MyFrame();
}
}
class MyFrame extends JFrame {
BufferedImage image;
JLabel label;
public MyFrame() {
setLayout(new …Run Code Online (Sandbox Code Playgroud)