gpt4 book ai didi

java - 如何更改滚动面板中按钮的大小

转载 作者:行者123 更新时间:2023-12-01 23:19:48 25 4
gpt4 key购买 nike

我想更改按钮的大小。我想为每个按钮设置一个方形 View ,但不幸的是它给出了矩形外观。仅当我将行数设置为 20 或 25 时,我才会看到方形外观。现在我的 GUI 如下所示:they look like rectangle. .

我尝试将其从buttons[i][j].setMaximumSize(new Dimension( 20, 20))更改,其中buttons是数组的名称。我也尝试过buttons[i][j].setsize但仍然没有效果。我从以下位置设置它: bPanel.setLayout(new GridLayout(x,y)) 我认为这是问题的主要原因。谁能告诉我如何将其设置为布局管理器?

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.event.*;
import javax.swing.JFrame;

import sun.util.calendar.Gregorian;

public class Final_GUI extends JFrame implements ActionListener {
JLabel label;
ButtonGroup cbg;
JRadioButton radio_1;
JRadioButton radio_2;
JRadioButton radio_3;
JCheckBox checkbox_1;
JCheckBox checkbox_2;
JCheckBox checkbox_3;
JScrollPane scrollpane_1;
JComboBox combobox_1;
JList list_1;
JScrollPane sp_list_1;
JComboBox combobox_2;
JButton Orange;
JButton Exit;
JLabel for_text;
int x=200;
int y=100;
int check [][]= new int [x][y];

JFrame frame = new JFrame();
JButton[][] buttons = new JButton[x][y];
JPanel mPanel = new JPanel();
JPanel bPanel = new JPanel();
JPanel cPanel = new JPanel();
JTextArea scoreKeeper = new JTextArea();


int[][] intArray = new int[x][y];

public Final_GUI() {

butGen();
score();


Final_GUILayout customLayout = new Final_GUILayout();

getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
getContentPane().setLayout(customLayout);

label = new JLabel("Shortest Path Finding Algorithm");
getContentPane().add(label);

cbg = new ButtonGroup();
radio_1 = new JRadioButton("radio_1", false);
cbg.add(radio_1);
getContentPane().add(radio_1);

radio_2 = new JRadioButton("radio_2", false);
cbg.add(radio_2);
getContentPane().add(radio_2);

radio_3 = new JRadioButton("radio_3", false);
cbg.add(radio_3);
getContentPane().add(radio_3);

checkbox_1 = new JCheckBox("checkbox_1");

getContentPane().add(checkbox_1);

checkbox_2 = new JCheckBox("checkbox_2");
getContentPane().add(checkbox_2);

checkbox_3 = new JCheckBox("checkbox_3");
getContentPane().add(checkbox_3);


bPanel.setLayout(new GridLayout(x,y));


mPanel.setLayout(new BorderLayout());

mPanel.add(bPanel, BorderLayout.CENTER);

scrollpane_1 = new JScrollPane(mPanel);



scrollpane_1.setViewportView(mPanel);
getContentPane().add(scrollpane_1);

combobox_1 = new JComboBox();
combobox_1.addItem("Size1");
combobox_1.addItem("Size2");
getContentPane().add(combobox_1);

DefaultListModel listModel_list_1 = new DefaultListModel();
listModel_list_1.addElement("Black");
listModel_list_1.addElement("Green");
list_1 = new JList(listModel_list_1);
sp_list_1 = new JScrollPane(list_1);
getContentPane().add(sp_list_1);

combobox_2 = new JComboBox();
combobox_2.addItem("Additional Data");
combobox_2.addItem("Additional Data2");
getContentPane().add(combobox_2);

Orange = new JButton("Orange");
getContentPane().add(Orange);

Exit = new JButton("Exit");

getContentPane().add(Exit);

for_text = new JLabel("Just For some text");
getContentPane().add(for_text);

setSize(getPreferredSize());

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

private void butGen()
{
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
buttons[i][j] = new JButton(String.valueOf(i)+"x"+String.valueOf(j));
buttons[i][j].setActionCommand("button" +i +"_" +j);
buttons[i][j].addActionListener(this);

buttons[i][j].setMaximumSize(new Dimension( 20, 20));

bPanel.add(buttons[i][j]);
}
}
}

public void actionPerformed(ActionEvent e)
{

if(e.getActionCommand().contains("button"))
{

String str = e.getActionCommand().replaceAll("button", "");
System.out.println(str);
String[] v = str.split("_");
int i = Integer.parseInt(v[0]);
int j = Integer.parseInt(v[1]);

intArray[i][j]++;

if(check[i][j]!=1){
buttons[i][j].setBackground(Color.black);
check[i][j]=1;
}
else{
buttons[i][j].setBackground(null);
check[i][j]=0;
}


System.out.println(e.getActionCommand() +" " +(i) +" " +(j));

score();
if(checkbox_1.isSelected())
{
buttons[i][j].setBackground(Color.GREEN);
}

}
}
private void score()
{
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
buttons[i][j].setText("");

}

public static void main(String args[]) {
Final_GUI window = new Final_GUI();

window.setTitle("SHORTEST PATH FINDING ALGORITHM");
window.setBackground(Color.black);
// window.setSize(800, 300);
window.setResizable(true);
window.resize(200, 500);
window.pack();
window.show();
}
}

图形用户界面布局

class Final_GUILayout implements LayoutManager {

public Final_GUILayout() {
}

public void addLayoutComponent(String name, Component comp) {
}

public void removeLayoutComponent(Component comp) {
}

public Dimension preferredLayoutSize(Container parent) {
Dimension dim = new Dimension(0, 0);

Insets insets = parent.getInsets();
dim.width = 1053 + insets.left + insets.right;
dim.height = 621 + insets.top + insets.bottom;

return dim;
}

public Dimension minimumLayoutSize(Container parent) {
Dimension dim = new Dimension(0,0);
return dim;
}

public void layoutContainer(Container parent) {
Insets insets = parent.getInsets();

Component c;
c = parent.getComponent(0);
if (c.isVisible()) {c.setBounds(insets.left+368,insets.top+24,304,64);}
c = parent.getComponent(1);
if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+120,72,24);}
c = parent.getComponent(2);
if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+144,72,24);}
c = parent.getComponent(3);
if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+168,72,24);}
c = parent.getComponent(4);
if (c.isVisible()) {c.setBounds(insets.left+88,insets.top+120,72,24);}
c = parent.getComponent(5);
if (c.isVisible()) {c.setBounds(insets.left+88,insets.top+144,72,24);}
c = parent.getComponent(6);
if (c.isVisible()) {c.setBounds(insets.left+88,insets.top+168,72,24);}
c = parent.getComponent(7);//Panel
if (c.isVisible()) {
c.setBounds(insets.left+168,insets.top+120,704,488);
}
c = parent.getComponent(8);
if (c.isVisible()) {c.setBounds(insets.left+880,insets.top+120,160,160);}
c = parent.getComponent(9);
if (c.isVisible()) {c.setBounds(insets.left+24,insets.top+232,128,216);}
c = parent.getComponent(10);
if (c.isVisible()) {c.setBounds(insets.left+880,insets.top+296,160,216);}
c = parent.getComponent(11);
if (c.isVisible()) {c.setBounds(insets.left+904,insets.top+528,112,24);}
c = parent.getComponent(12);
if (c.isVisible()) {c.setBounds(insets.left+888,insets.top+568,144,32);}
c = parent.getComponent(13);
if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+472,120,48);}
}

}

最佳答案

GridLayout 的工作原理是为每个组件提供相等的空间,使每个组件填充每个单元格。

看看How to use GridLayout了解更多详情。

如果您想要一个 LayoutManager 为您提供最好的控制,但它将(除非您另有说明)使用组件的首选/最小/最大尺寸提示,您应该考虑尝试一些东西像 GridBagLayout 相反

看看How to use GridBagLayout了解更多详情

关于java - 如何更改滚动面板中按钮的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com