- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感谢您帮我看这个,这是我的问题:
我的 MyFrame 类中的 If 语句说“MyShape 是抽象的,无法实例化”我也不知道如何完成我的 actionlistener,以便它创建一个我从 jmenu 选择的形状的实例。最后将我的 Jslider 的尺寸设置为我的 square 的大小和面积,并将其添加到 JtextField。
我很乐意提供任何帮助,如果你能解释我需要做的事情,这是一种简单的方法,让像我这样的编程新手能够理解 :)
我的框架
package assignment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MyFrame extends javax.swing.JFrame {
public MyFrame() {
// Create the menu
JMenuBar topMenu = new JMenuBar();
this.setJMenuBar(topMenu);
//create the menu button "shapes"
JMenu shapes = new JMenu("Shapes");
topMenu.add(shapes);
//Create the 3 shapes for the menu
JMenuItem square = new JMenuItem("Square");
JMenuItem circle = new JMenuItem("Circle");
JMenuItem triangle = new JMenuItem("Triangle");
//add shapes to menu
shapes.add(circle);
shapes.add(triangle);
shapes.add(square);
//add the menu
setJMenuBar(topMenu);
MyControlPanel pane = new MyControlPanel();
this.add(pane);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MyFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MyFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MyFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MyFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyFrame().setVisible(true);
}
});
class squareAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
JMenuItem clickedMenu = (JMenuItem) e.getSource();
if (clickedMenu.getText().equals("Square")) {
MyShape ASquare = new MyShape() {
};
} else if (clickedMenu.getText().equals("Circle")) {
MyShape Circle = new MyShape();
} else if (clickedMenu.getText().equals("Triangle")) {
MyShape Triangle = new MyShape();
}
}
}
}
}
package assignment;
//import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class MyControlPanel extends javax.swing.JPanel {
JSlider slider;
JLabel sliderLabel;
JLabel sliderdimension;
JLabel blank;
JLabel dl;
JLabel area1;
/**
* Creates new form MyControlPanel
*/
public MyControlPanel() {
slider = new JSlider();
slider.setValue(50);
slider.addChangeListener(new MyChangeAction());
slider.setMajorTickSpacing(10);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setBounds(300, 50, 100, 50);
sliderLabel = new JLabel("50");
blank = new JLabel(" ");
sliderdimension = new JLabel("Shape Dimension:");
JTextField boundary_length = new JTextField("Boundary Length");
JTextField area = new JTextField("Area");
dl = new JLabel("Boundary Length =");
area1 = new JLabel("Area =");
setLayout(new BorderLayout());
JPanel sliderPanel = new JPanel();
sliderPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0));
sliderPanel.add(sliderdimension);
sliderPanel.add(sliderLabel);
sliderPanel.add(slider);
sliderPanel.add(dl);
sliderPanel.add(boundary_length);
sliderPanel.add(area1);
sliderPanel.add(area);
this.add(sliderPanel, BorderLayout.PAGE_END);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
public class MyChangeAction implements ChangeListener {
//complete code here
public void stateChanged(ChangeEvent ce) {
int value = slider.getValue();
String str = Integer.toString(value);
sliderLabel.setText(str);
}
} // end class
}
我的形状
package assignment;
public abstract class MyShape
{
double thelength;
double thearea;
public abstract double computeBoundaryLength(double Length);
public abstract double computeArea (double Length);
}
正方形
package assignment;
public class ASquare extends MyShape {
@Override
public double computeBoundaryLength(double Length)
{
thelength=(4*Length);
return thelength;
}
@Override
public double computeArea(double Length)
{
thearea=(Length*Length);
return thearea;
}
}
类 shapeAction 实现 ActionListener{ public void actionPerformed(ActionEvent e){
JMenuItem clickedMenu = (JMenuItem)e.getSource();
if (clickedMenu.getText().equals("Square")){
//implement abstract methods
MyShape ASquare = new ASquare();
ASquare.addActionListener(new shapeAction());
}
else if (clickedMenu.getText().equals("Circle")){
//implement abstract methods
MyShape ACircle = new ACircle();
ACircle.addActionListener(new shapeAction());
}
else if (clickedMenu.getText().equals("Triangle")){
//implement abstract methods
MyShape ATriangle = new ATriangle();
ATriangle.addActionListener(new shapeAction());
最佳答案
squareAction
是用来监听所有可能的菜单选择的类(每种形状一个),所以它应该被命名为 ShapeMenuAction
或其他名字像那样。如果您希望在选择菜单选项时执行 ShapeMenuAction
的 actionPerformed
,您必须创建它的一个实例并将其添加到每个 MenuItem
对它们使用 addActionListener
方法。否则,什么也不会发生。在 MyFrame 中:
JMenuItem square = new JMenuItem("Square");
square.addActionListener(new ShapeAction());
JMenuItem circle = new JMenuItem("Circle");
circle.addActionListener(new ShapeAction());
JMenuItem triangle = new JMenuItem("Triangle");
triangle.addActionListener(new ShapeAction());
actionPerformed
中,您必须实例化MyShape
的具体子类。现在你除了实例化一个形状什么都不做,你必须在方法结束之前对对象做一些事情,对吧?在您的 MyControlPanel
中创建一个 setShape
方法,并从 actionPerformed 调用它,将新创建的形状传递给它。在 ShapeAction 中:
public void actionPerformed(ActionEvent e) {
JMenuItem clickedMenu = (JMenuItem) e.getSource();
if (clickedMenu.getText().equals("Square")) {
MyShape aSquare = new ASquare();
myControlPanel.setShape(aSquare);
} else if (clickedMenu.getText().equals("Circle")) {
MyShape aCircle = new ACircle();
myControlPanel.setShape(aCircle);
} else if (clickedMenu.getText().equals("Triangle")) {
MyShape aTriangle = new MyShape();
myControlPanel.setShape(aTriangle);
}
}
您必须在 MyFrame 中创建一个名为 myControlPanel 的 MyControPanel:
private MyControlPanel myControlPanel
并添加它
myControlPanel = new MyControlPanel();
getContentPane().add(myControlPanel);
之前
pack();
在 MyControlPanel
中,您现在可以根据 slider 值和所选形状更新标签,每次其中一个发生变化时。
私有(private) MyShape 形状;public void set Shape(MyShape shape) { this.shape = 形状; 更新标签();
关于Java,听众建议,swing comp's,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13016684/
这个问题在这里已经有了答案: Why don't Java's +=, -=, *=, /= compound assignment operators require casting? (11 个
我搜索了很多,但没有一个链接能帮助我解决这个问题。我得到了 ORA-21500: internal error code, arguments: [%s], [%s], [%s], [%s], [%s
我正在做 RegexOne 正则表达式教程,它有一个 question关于编写正则表达式以删除不必要的空格。 教程中提供的解决方案是 We can just skip all the starting
([\s\S]+|\s?) 中 |\s? 的目的或作用是什么?如果没有它,表达式会不会与 ([\s\S]+) 相同? 最佳答案 这不是完全相同的。 ([\s\S]+|\s?) 会匹配空字符串,而 ([
这个正则表达式有一组还是两组? 我正在尝试使用第二组访问 bookTitle 但出现错误: Pattern pattern = Pattern.compile("^\\s*(.*?)\\s+-\\s+
在 C 中给定一个字符串指针 s,下面的迭代会做什么?即它以什么方式遍历字符串? for (++s ; *s; ++s); 最佳答案 for (++s ; *s;++s) 表示 将指针 s 递增到字符
我正在用一个 node.js 应用程序解析一个大列表并有这段代码 sizeCode = dbfr.CN_DESC.split('\s+-\s*|\s*-\s+') 这似乎不起作用,因为它返回了 [ '
我正在编写一个简单的字符串连接程序。 该程序按照我发布的方式运行。但是,我首先使用以下代码编写它来查找字符串的结尾: while (*s++) ; 但是,这个方法并没有奏效。我传递给它的字符串
这个问题已经有答案了: What does (?和aramchand来自Mohandas Karamchand G 因此,在使用这些匹配来分割字符串后,您最终会得到 {"M", "K", "G"} 注
我正在尝试转换 Map到 List使用 lambda。 本质上,我想将键和值与 '=' 连接起来之间。这看起来微不足道,但我找不到如何去做。 例如 Map map = new HashMap<>();
我正在经历 K & R,并且在递增指针时遇到困难。练习 5.3(第 107 页)要求您使用指针编写一个 strcat 函数。 在伪代码中,该函数执行以下操作: 将 2 个字符串作为输入。 找到字符串
在下面的代码中,pS 和 s.pS 在最后一行是否保证相等?也就是说,在语句S s = S();中,是否可以确定不会构造一个临时的S? #include using namespace std; s
演示示例代码: public void ReverseString(char[] s) { for(int i = 0, j = s.Length-1; i < j; i++, j--){
我一直在寻找类似于 .NET examples 中的示例的 PowerShell 脚本.取一个 New-TimeSpan 并显示为 1 天 2 小时 3 分钟 4 秒。排除其零的地方,在需要的地方添加
def func(s): s = s + " is corrected" return s string_list = ["She", "He"] for s in string_li
我是 python 的新手。当我在互联网上搜索 lambda 时。我在 lambda_functions 中找到了这个声明. processFunc = collapse and (lambda s:
我最近开始学习正则表达式,并试图为上面的问题写一个正则表达式。如果限制只放在一个字母上(例如不超过 2 个“b”),这并不困难。 那么答案就是:a* c*(b|ε)a* c*(b|ε)a* c* 但是
当我运行 npm install 时出现以下错误,但我无法修复它。 我试过:npm install -g windows-build-tools 也没有修复这个错误 ERR! configure
有很多有趣的haskell网上可以找到片段。 This post可以在 this (awesome) Stack Overflow question 下找到. The author写道: discou
我知道以下三行代码旨在将字符串提取到$ value中并将其存储在$ header中。但是我不知道$value =~ s/^\s+//;和$value =~ s/\s+$//;之间有什么区别。 $val
我是一名优秀的程序员,十分优秀!