gpt4 book ai didi

java - 为什么 JList 'cut' 或其他内容出现在我的 GUI 框架输出中?

转载 作者:行者123 更新时间:2023-12-01 22:00:12 24 4
gpt4 key购买 nike

好的,我编写了一个程序,这是 GUI 输出...

GUI output

enter image description here

我尝试调整它的大小,但没有骰子...不起作用。 jlist 'box' 仍然以某种方式被剪切...请帮忙?

Resized Output

enter image description here

顺便说一句,如果需要的话,这里是代码......

import java.awt.GridLayout;
import java.awt.BorderLayout;

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

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JRadioButton;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Order extends JFrame{

JLabel title;
JLabel size;
JLabel top;
JRadioButton b1;
JRadioButton b2;
JRadioButton b3;
JCheckBox c1;
JCheckBox c2;
JCheckBox c3;
JButton process;
ButtonGroup group;
JPanel p1;
JPanel p2;
JPanel p3;
double total;
boolean cb1 = false;
boolean cb2 = false;
boolean cb3 = false;
boolean cheese = false;
boolean tomato = false;
boolean mushroom = false;
String toppings = "Add-on Toppings: ";
double length = 0;
boolean cf = false;
boolean tf = false;
boolean mf = false;
String sizeString;
String num;
String price = "Amount Due: ";
DefaultListModel tops;
double tprice;
String listData[] = new String [3];
JScrollPane pain;

public Order(){

super ("");

p1 = new JPanel();

title = new JLabel("WELCOME TO HAUZ DINNERS");
p1.add(title);

add(p1, BorderLayout.NORTH);

p2 = new JPanel();
p2.setLayout(new GridLayout(4,2));

size = new JLabel("Burger Size");
p2.add(size);

top = new JLabel("Each Add-on Toppings: $1.25");
p2.add(top);

b1 = new JRadioButton("Small: $3.50");
p2.add(b1);

b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
total = 3.50;
sizeString = "Burger Size: Small";
}
});

c1 = new JCheckBox("Extra Cheese");
p2.add(c1);

c1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(c1.isSelected()){
cheese = true;
}
else{
cheese = false;
}

if(cheese == true){
length++;
}
else{
length--;
}
}
});

b2 = new JRadioButton("Medium: $4.50");
p2.add(b2);

b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
total = 4.50;
sizeString = "Burger Size: Medium";
}
});

c2 = new JCheckBox("Tomato");
p2.add(c2);

c2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(c2.isSelected()){
tomato = true;
}
else{
tomato = false;
}

if(tomato == true){
length++;
}

else{
length--;
}
}
});

b3 = new JRadioButton("Large: $6.00");
p2.add(b3);

b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
total = 6.00;
sizeString = "Burger Size: Large";
}
});

c3 = new JCheckBox("Mushrooms");
p2.add(c3);

c3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(c3.isSelected()){
mushroom = true;
}
else{
mushroom = false;
}

if(mushroom == true){
length++;
}

else{
length--;
}
}
});

group = new ButtonGroup();
group.add(b1);
group.add(b2);
group.add(b3);

add(p2, BorderLayout.CENTER);

p3 = new JPanel();

process = new JButton("Process Order");
p3.add(process);

process.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cheese == true){
cf = true;
if((cf == true)&&(tf != true)&&(mf != true)){
toppings = toppings + "Extra Cheese";
}
else{
toppings = toppings + ", Extra Cheese";
}
}
if(tomato == true){
tf = true;
if((cf != true)&&(tf == true)&&(mf != true)){
toppings = toppings + "Tomato";
}
else{
toppings = toppings + ", Tomato";
}
}
if(mushroom == true){
mf = true;
if((cf != true)&&(tf != true)&&(mf == true)){
toppings = toppings + "Mushrooms";
}
else{
toppings = toppings + ", Mushrooms";
}
}

tprice = 1.25 * length;

total = total + tprice;
num = Double.toString(total);

price = price + "$" + num;

listData [0] = sizeString;
listData [1] = toppings;
listData [2] = price;

}
});
JList<String> list = new JList<>(listData);
list.setSelectedIndex(0);
pain = new JScrollPane(list);

p3.add(list);

add(p3, BorderLayout.SOUTH);

}

public static void main(String[]args){

Order frame = new Order();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(350,220);
frame.setVisible(true);

}

}

最佳答案

首先,将 p3 的布局管理器更改为更实用的内容,而不是默认的 FlowLayout 管理器...

p3 = new JPanel();
p3.setLayout(new BorderLayout());
process = new JButton("Process Order");
p3.add(process, BorderLayout.NORTH);

接下来,确保将 JScrollPane 添加到容器中,而不仅仅是 JList

JList<String> list = new JList<>();
list.setSelectedIndex(0);
list.setVisibleRowCount(3);
pain = new JScrollPane(list);

p3.add(pain, BorderLayout.SOUTH);

add(p3, BorderLayout.SOUTH);

现在,需要注意的事项。我添加了 list.setVisibleRowCount(3); ,它为 JList 提供了一些大小调整提示。我还在构建时从 JList 中删除了 listData ,这是因为列表是空数组,并且 JList 使用它的内容来确定“首选”行大小,这导致 JList

非常小

最终会产生类似......的结果

Layout

现在,当您单击Process Order时,您需要创建一个ListModel并将其应用到您的JList,这将需要使 JList 可用于按钮的 ActionListener,可能是通过将其设为实例字段

关于java - 为什么 JList 'cut' 或其他内容出现在我的 GUI 框架输出中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661127/

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