我的问题是我的JTextField -setColumns(int)
"field1.setColumns(5);"
......不起作用.我猜它是一个布局管理器问题.但是,我正在练习练习册.我所知道的唯一布局是flowLayout,borderLayout和gridlayout.
简而言之,只要"field2"触发ActionEvent(通过按回车键),"field1"就应该改变大小.
我在"actionPerformed"中放置了一个"System.out.println("ActionEvent detect")来证明一个actionevent正在被触发,所以这不是问题.我甚至打印了"field1.getColumn"并且它显示正确的更改值5,但是...它不仅不会在运行时明显改变大小.
我不希望有人能够解释这个问题.解决这个问题不会帮助我学习,这是解决这些书籍练习的全部目的.
重要的是,我在netbeans编码.在此先感谢您的帮助.
public class Exercise13_11 extends JFrame implements ActionListener
{
private JTextField textField1, textField2;
private JLabel label1, label2;
private JRadioButton rButton1, rButton2, rButton3;
public static void main(String[] args)
{
JFrame frame = new Exercise13_11();
frame.setTitle("Exercise 13.11");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450, 200);
frame.setVisible(true);
}
public Exercise13_11()
{
// North Panel aligned and filled.
JPanel northPanel = new JPanel();
northPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
northPanel.add(label1 = new JLabel("Text Field"));
northPanel.add(textField1 = new JTextField(20));
northPanel.setToolTipText("Demonstrate JTextField");
getContentPane().add(northPanel, BorderLayout.CENTER);
// South panel …Run Code Online (Sandbox Code Playgroud) Java初学者.
嗨,我没有任何GUI编程经验.所以我想了解如何解决这个下一个项目的一些提示.希望我能够很好地解释自己.
计划http://mobilehomeservicesltd.com/2010images/decking/mhs10.jpg
(参见上面的照片作为参考)我的程序的这个GUI方面将是2D - 用基本形状制作的静态大篷车和阳台/阳台的鸟瞰图.所以通常大篷车将由一个矩形表示(只是一个矩形,忽略图中的填充).有时静态大篷车具有形状前沿,因此将由多边形表示而不是矩形.所有规模都取决于用户输入,因为所有大篷车都有各自的尺寸.
大篷车单元到位后,我需要绘制围绕大篷车的另一个多边形,代表阳台/阳台,全部按比例缩放.到目前为止了解?好.这是挑战部分(无论如何对我而言).
在表示阳台的多边形上,我需要能够绘制线条来表示将被固定为表面的平台(如上图所示).现在因为大篷车可能有一个成型的前部,装饰必须遵循大篷车的形状.换句话说,如果大篷车具有椭圆形或成角度的前部,则必须切割地板以遵循该形状.
没有对细节感到厌烦.我们的想法是让用户决定他们是否希望以与大篷车相同的方向安装或安装的平台.一旦用户决定我将尝试从图纸中计算(因为它将按比例)建造这个阳台需要多少全长的装饰(在各种其他项目中).
现在我的知识仅限于GUI,但是我要抓住面板和绘图线,矩形,多边形等......我最初的想法是使用g.drawLine方法手动绘制大篷车,与阳台一样,然后基于像素计数的计算来计算所有各种组件.
我是不是在深入尝试这个,或者这是一个相对容易编程的东西?有没有更有效的方法来做这个我应该在尝试之前查找?
http://img853.imageshack.us/img853/2475/picture1eu.jpg
我有一个点/坐标的ArrayList表示一个直线多边形.我现在想要使用ArrayList中存储的Points将这个形状分解为矩形.
我已经开始了一个算法,但我无法完成它,我觉得必须有一个更简单的方法:
ArrayList称为"allCoordinates".
ArrayList"xMatch"和"yMatch"是allCoordinates的子集.
算法:
ArrayList yMatch = All matching Coordinates in respect to 'y'
Run Code Online (Sandbox Code Playgroud)
所以在上图的情况下:(
设置1 = [x1,y1] - [x8,y8],
Set2 = [x7,y7] - [x2,y2],
Set3 = [x4,y4] [x5,x5 ],
Set4 = [x3,y3] [x6,x6])
ArrayList xMatch = All matching Coordinates in respect to 'x'
Run Code Online (Sandbox Code Playgroud)
所以在上图的情况下:(
Set 1 = [x1,y1] - [x2,y2],
Set2 = [x3,y3] - [x4,y4],
Set3 = [x5,y5] [x6,x6 ],
Set4 = [x7,y7] [x8,x8])
所以现在我有两个arrayLists,所有垂直边缘和所有水平边缘.现在我需要一些方法来检查它们是否全部连接在一起?就像我说的那样,必须有一个更简单的方法......?
编辑:
我可以澄清一下,必须使用在现有坐标上开始和结束的相交线来形成矩形.例如,可以从(x6,y6)水平绘制一条线,并在边缘(x1,y1) - (x8,y8)上完成.此行将从现有坐标开始,但不会在现有坐标上完成.因此该行无效.
我有一段简单的代码,表现不尽如人意.
这段代码试图添加一个BigDecimals数组,然后除以array.length来找到一个平均值.但是,算法的第一阶段无法正确地将数组添加到一起(在变量"sum"中).
public BigDecimal getAverageHeight()
{
BigDecimal sum = new BigDecimal(0);
BigDecimal[] heights = getAllHeights();
for (int a = 0; a < heights.length; a++)
{
sum.add(heights[a]);
System.out.println("Height[" + a + "] = " + heights[a]);
System.out.println("Sum = " + sum.setScale(2, BigDecimal.ROUND_HALF_UP));
}
return sum.divide(new BigDecimal(heights.length));
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
Height[0] = 24
Sum = 0.00
Height[1] = 24
Sum = 0.00
Height[2] = 24
Sum = 0.00
Height[3] = 26
Sum = 0.00
Height[4] = 26
Sum = 0.00
Height[5] = 26 …Run Code Online (Sandbox Code Playgroud) 这是我的代码,非常简单.它不是家庭作业,我通过教育书自学java:
import java.util.*;
/** @author Chris */
public class Exercise9_9 extends GregorianCalendar
{
public static void main(String[] args)
{
String[] stringList = {"s", "c", "b", "f", "e", "q", "g", "w", "i", "o"};
Integer[] integerList = {5, 7, 8, 9, 6, 5, 4, 1, 2, 3};
Calendar[] calendarList = new Calendar[10];
for (int a = 0; a < calendarList.length; a++)
{
calendarList[a] = new GregorianCalendar();
calendarList[a].set(Calendar.YEAR, ((int)Math.random()* 1000));
}
System.out.println("Largest String: " + max(stringList));
System.out.println("Largest int: " + max(integerList));
**System.out.println("Largeset date: …Run Code Online (Sandbox Code Playgroud) java ×4
swing ×2
algorithm ×1
bigdecimal ×1
jtextfield ×1
methods ×1
overloading ×1
overriding ×1
rectangles ×1
tostring ×1