JAVA中复选框组件的使用,以及JScrollPane面板的问题,请大家帮我看一下
/**Tochangethislicenseheader,chooseLicenseHeadersinProjectProperties.*Tochangethistem...
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package creatimageicon;import javax.swing.*;import java.awt.*;import java.awt.event.*;/** * * @author Meng */public class CheckBoxTest extends JFrame { CheckBoxTest() { Container c = getContentPane(); c.setLayout(null); JCheckBox box1 = new JCheckBox("1", true); JCheckBox box2 = new JCheckBox("2", false); JCheckBox box3 = new JCheckBox("3", true); JCheckBox box4 = new JCheckBox("4", false); final JTextArea ta = new JTextArea(70, 70); final JScrollPane SP = new JScrollPane(ta); JPanel p1 = new JPanel(new GridLayout(1, 4, 5, 5)); JPanel p2 = new JPanel(new GridLayout(4,1,5,5)); p2.add(SP); p1.add(box1); p1.add(box2); p1.add(box3); p1.add(box4); box1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ta.append("Correct!"); } }); c.add(p2, BorderLayout.NORTH); c.add(p1, BorderLayout.SOUTH); setSize(300, 300); c.setBackground(Color.pink); setDefaultCloseOperation(3); setVisible(true); }}真心不知道为什么出错,想做出来一个面板,分上下两部分,上面是个文本区域,下面是个多选区域,每次在下面选一个选项,文本区域相应会出现一句话。不知道我这code为什么没有东西出来啊求大家帮我改code啊
啊,少了一行
开头再加一个
c.setLayout(new BorderLayout());
哪位大神帮我解决了这个问题我可以再加20分给你啊 展开
啊,少了一行
开头再加一个
c.setLayout(new BorderLayout());
哪位大神帮我解决了这个问题我可以再加20分给你啊 展开
2个回答
展开全部
帮你代码格式调整了一下,之前的太难看了,然后错误有:
1、你LayOut设成空(null)了,所以你的组件显示不出来
2、你的文本框设置得太大了,盖住了整个屏幕,文本框初始化传入的参数不是大小,是显示的行数和列数
3、你只是添加了box1的选择响应动作,其他的都没添加。
以上我帮你你在代码中改正了1、2,然后3的问题就你可以直接搞定了吧?
写java的GUI程序最重要的细心,一点一点的调节各个组件的大小来适应你的显示需求。
以下是代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CheckBoxTest extends JFrame {
public CheckBoxTest() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
//c.setLayout(null);
JCheckBox box1 = new JCheckBox("1", true);
JCheckBox box2 = new JCheckBox("2", false);
JCheckBox box3 = new JCheckBox("3", true);
JCheckBox box4 = new JCheckBox("4", false);
final JTextArea ta = new JTextArea();
ta.setRows(15);
final JScrollPane SP = new JScrollPane(ta);
JPanel p1 = new JPanel(new GridLayout(1, 4, 5, 5));
//JPanel p2 = new JPanel(new GridLayout(4, 1, 5, 5));
//p2.add(SP);
p1.add(box1);
p1.add(box2);
p1.add(box3);
p1.add(box4);
box1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.append("Correct!");
}
});
c.add(SP, BorderLayout.NORTH);
c.add(p1, BorderLayout.SOUTH);
setSize(300, 300);
c.setBackground(Color.pink);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String...args){
new CheckBoxTest();
}
}
追问
我的layout先调成Null再赋予 borderlayout之类的是不可行的吗?
谢谢你啊 我在自学 不知道text那个是行列数。。。
追答
先设置成null,再设成其他的layout是可以的,不过你之前的代码中好像反过来了。
再说应该没有这样的必要吧,代码里面还是尽量不要有多余的代码,影响阅读~~~
展开全部
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class CheckBoxTest extends JFrame {
CheckBoxTest() {
Container c = getContentPane();
c.setLayout(new GridLayout(2, 1, 5, 5));
JCheckBox box1 = new JCheckBox("1", true);
JCheckBox box2 = new JCheckBox("2", false);
JCheckBox box3 = new JCheckBox("3", true);
JCheckBox box4 = new JCheckBox("4", false);
final JTextArea ta = new JTextArea(70, 70);
final JScrollPane SP = new JScrollPane(ta);
JPanel p1 = new JPanel(new GridLayout(1, 4, 5, 5));
p1.add(box1);
p1.add(box2);
p1.add(box3);
p1.add(box4);
box1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.append("Correct!\n");
}
});
c.add(SP);
c.add(p1);
setSize(300, 300);
//c.setBackground(Color.pink);
setDefaultCloseOperation(3);
setVisible(true);
//this.add(c);
}
public static void main(String[] args) {
new CheckBoxTest();
}
}
希望可以帮到你,呵呵!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询